Pytorch出现这个错误。
起初原因是我想要把装着tensor的list转为tensor类型,即 [tensor(), tensor(), tensor()] 转为tensor,然后我是这样写的,
a = torch.randn(1,2) # tensor([[-0.4962, 0.6034]])
d = [a, a, a] # [tensor([[-0.4962, 0.6034]]), tensor([[-0.4962, 0.6034]]), tensor([[-0.4962, 0.6034]])]
d = torch.tensor(d)
就报错了。ValueError: only one element tensors can be converted to Python scalars
网上看到一个解决办法,
val= torch.tensor([item.cpu().detach().numpy() for item in val]).cuda()
这种方法非常不优雅简洁。
另一种办法,使用torch.cat,非常简洁。如果想在扩充维度,可以在此基础上使用unsqueeze等操作。
d = torch.cat(d, 0)
'''
得到结果:tensor([[-0.4962, 0.6034],
[-0.4962, 0.6034],
[-0.4962, 0.6034]])
'''