我有一个庞大的numpy数组列表,其中每个数组代表一个图像,我想使用torch.utils.data.Dataloader对象加载它。但是torch.utils.data.Dataloader的文档提到它直接从文件夹加载数据。我该如何为我的事业修改它?我是新来的,任何帮助都将非常感谢。 我的单个图像的numpy数组看起来像这样。图像是RBG图像。
`[[[ 70 82 94]
[ 67 81 93]
[ 66 82 94]
...,
[182 182 188]
[183 183 189]
[188 186 192]]
[[ 66 80 92]
[ 62 78 91]
[ 64 79 95]
...,
[176 176 182]
[178 178 184]
[180 180 186]]
[[ 62 82 93]
[ 62 81 96]
[ 65 80 99]
...,
[169 172 177]
[173 173 179]
[172 172 178]]
...,
`
我认为DataLoader实际需要的是一个子类
Dataset
的输入。您可以编写自己的数据集类,使其成为Dataset
的子类,也可以使用TensorDataset
,如下所示:对我有用。希望对你有帮助。
PyTorch
DataLoader
需要一个DataSet
,因为您可以签入docs。正确的方法是:这是一个用于包装张量的数据集,其中每个样本将通过沿着第一个维度索引张量来检索。 参数
*tensors
表示具有与第一维相同大小的张量。另一个是抽象类。
下面是如何将numpy数组转换为张量:
接受的答案使用了
torch.Tensor
构造。 如果您的图像像素为0-255,则可以使用:或者torchvision^{} 方法,将PIL图像或numpy.ndarray转换为张量。
但这里有一个小技巧,你可以把你的核阵列直接。
这也可以,但是如果您打印
d1.dataset
类型:虽然我们实际上需要张量来处理CUDA,所以最好使用张量来填充
DataLoader
。因为您有图像,所以可能需要对它们执行转换。所以
TensorDataset
不是这里最好的选择。相反,您可以创建自己的Dataset
。像这样的:相关问题 更多 >
编程相关推荐