我有一个图像数据集,我使用PIL和 Torch Tensor转换成Tensor在一个循环,并将它们存储在一个列表中。
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)
现在在train之前我想使用以下命令将列表转换为np.array:
train1 = np.array(train1)
这将显示错误:
ValueError: only one element tensors can be converted to Python scalars
我还打印了列表train1的组成元素的形状和类型,发现它们是预期的Tensor。
有人能帮我吗?
2条答案
按热度按时间js5cn81o1#
从FloatTensors转换为numpy数组的方法应该是:
afdcj2ne2#
我认为这个错误可能是由于
np.array
处理list
作为参数的方式。引擎盖下的一些东西与pytorchTensor不太匹配。您可以先堆叠Tensor,然后在其上调用
.numpy()
方法。