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中将包含多个Tensor的列表转换为单一Tensor的方法。介绍了直接转换失败的原因,并提供了两种解决方案:一种是通过将每个Tensor转换为NumPy数组再重构为Tensor;另一种更简洁的方法是使用`torch.cat`函数。
1万+

被折叠的 条评论
为什么被折叠?



