![](/img/trans.png)
[英]ValueError: only one element tensors can be converted to Python scalars when converting list to float Torch tensor
[英]ValueError: only one element tensors can be converted to Python scalars while converting list to numpy array
我有一个图像数据集,我正在使用 PIL 和 Torch 张量在循环中将它们转换为张量并将它们存储在一个列表中。
def preprocess(string):
return torch.FloatTensor(np.ascontiguousarray(np.array((PIL.Image.open(string)).convert('RGB'))[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) * (1.0 / 255.0)))
import os
folder_name = 'folder name and path'
train1 = []
for item in folder_name:
x = preprocess(item)
train1.append(x)
现在在训练之前,我想使用以下方法将列表转换为 np.array:
train1 = np.array(train1)
这显示了错误:
ValueError: only one element tensors can be converted to Python scalars
我还打印了列表 train1 的组成部分的形状和类型,发现它们是预期的张量。
任何人都可以帮我吗?
从 FloatTensors 转换为 numpy arrays 的方法应该是:
train1.append(x.numpy())
我认为该错误可能是由于np.array
将list
处理为 arguments 的方式。 go 与 pytorch 张量不匹配。
相反,您可以先堆叠张量并在其上调用.numpy()
方法。
train1 = torch.stack(train1, dim=0).numpy()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.