我正在尝试使cuda正常工作,但我需要将训练输入更改为张量。当我尝试这样做时,尝试将张量列表堆叠到一个张量中时遇到错误。
代码
for epoch in:
alst = []
for x, y in loader:
x = torch.stack(x)
#x = torch.Tensor(x)
#x = torch.stack(x).to(device,dtype=float)
x的形状:张量列表
[tensor([[[0.325],
[ 0.1257],
[ 0.1149],
...,
[-1.572],
[-1.265],
[-3.574]],
]), tensor([1,2,3,4,5]), tensor(6,5,4,3,2])]
我遇到错误
22 alst = []
23 for x, y in loader:
---> 24 x_list = torch.stack(x)
25 # x = torch.Tensor(x)
26 # x = torch.stack(x).to(device,dtype=float)
RuntimeError: Expected object of scalar type Float but got scalar type Long for sequence element 1 in sequence argument at position #1 'tensors'
不确定我在做什么错。我也尝试过x = torch.stack(x).to(device,dtype=float)
,但还是没用。
答案 0 :(得分:1)
输出中的第一个张量为浮点型,其值用于输入网络,第二个张量类似于标签(类型为selectAllow: function(selectInfo) {
var ms = moment().startOf("month");
return ms.isSameOrBefore(selectInfo.start);
}
)。
此外,第一个是long
,而第二个和第三个元素是tensor
(分别带有vectors
和6
元素)。
您不能堆叠9
的不同形状,因此无论类型如何都无法使用。
通过
打开tensors
的包装
x
要删除matrix, vector1, vector2 = x
警告,请通过
type
和vector1
投射到vector2
float
通过vector1 = vector1.float()
属性检查其形状并采取相应措施。
也许您在使用.shape
时已经有一批数据。有关更多信息,请参见:DataLoader documentation,并检查您是否正在使用一个。