我有一个张量叫做data
形状的[128, 4, 150, 150]
其中 128 是批量大小,4 是通道数,最后 2 个维度是高度和宽度。我有另一个张量叫做fake
形状的[128, 1, 150, 150]
.
我想放弃最后一个list/array
从第 2 维data
;数据的形状现在是[128, 3, 150, 150]
;并将其与fake
给出串联的输出维度为[128, 4, 150, 150]
.
基本上,换句话说,我想连接前 3 个维度data
with fake
给出 4 维张量。
我正在使用 PyTorch 并遇到了这些函数torch.cat()
and torch.stack()
这是我编写的示例代码:
fake_combined = []
for j in range(batch_size):
fake_combined.append(torch.stack((data[j][0].to(device), data[j][1].to(device), data[j][2].to(device), fake[j][0].to(device))))
fake_combined = torch.tensor(fake_combined, dtype=torch.float32)
fake_combined = fake_combined.to(device)
但我在该行中收到错误:
fake_combined = torch.tensor(fake_combined, dtype=torch.float32)
错误是:
ValueError: only one element tensors can be converted to Python scalars
另外,如果我打印的形状fake_combined
,我得到的输出为[128,]
代替[128, 4, 150, 150]
当我打印形状时fake_combined[0]
,我得到的输出为[4, 150, 150]
,这符合预期。
所以我的问题是,为什么我无法使用将列表转换为张量torch.tensor()
。我错过了什么吗?有没有更好的方法来做我想做的事情?
任何帮助将不胜感激!谢谢!