报错RuntimeError: Expected object of scalar type Float but got scalar type Double for sequence elment 2 in sequence at position #1 ‘tensors’
解决方法:把类型改成float(需要转换为同一种dtype数据类型)
示例一:
错误代码:
def forward(self, x, neigbor, flow):
### initial feature extraction
feat_input = self.feat0(x)
feat_frame=[]
for j in range(len(neigbor)):
feat_frame.append(self.feat1(torch.cat((x, neigbor[j], flow[j]),1))) #这一行代码显示有error
后面改成float格式就没有问题了,修正代码如下:
def forward(self, x, neigbor, flow):
### initial feature extraction
feat_input = self.feat0(x)
feat_frame=[]
for j in range(len(neigbor)):
neigbor_f= neigbor[j]
neigbor_f=neigbor_f.float()
flow_f=flow[j]
flow_f=flow_f.float()
feat_frame.append(self.feat1(torch.cat((x, neigbor_f, flow_f),1))
示例二:
错误代码:
a=torch.tensor([1,2,3],dtype=torch.float32)
b=torch.tensor([1,2,3],dtype=torch.float64)
不同dtype的tensor不能进行矩阵乘法,需要转换为同一种dtype数据类型,像上面的bug一个32位浮点数和64位浮点数的tensor就不可以进行矩阵乘法。
修正代码如下:
a=torch.tensor([1,2,3],dtype=torch.float32)
b=torch.tensor([1,2,3],dtype=torch.float64)
a=a.to(torch.float64)