ValueError: only one element tensors can be converted to Python scalars

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]])
'''

你可能感兴趣的:(pytorch)