我有一个很大的numpy数组列表,这里每个数组代表一个图像,我想用torch.utils.data.dataloader对象加载它。但是torch.utils.data.dataloader的文档提到它直接从一个文件夹加载数据。我如何修改它呢?我是pytorch的新手,任何帮助都将非常感谢。我的一个单一图像的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]]
...,
3条答案
按热度按时间p1tboqfb1#
我认为DataLoader实际上需要的是一个子类化
Dataset
的输入,您可以编写自己的子类化Dataset
的数据集类,也可以像下面这样使用TensorDataset
:对我有用。
pqwbnv8z2#
因为你有图像,你可能想对它们进行转换,所以
TensorDataset
不是最好的选择,相反你可以创建自己的Dataset
,比如:axr492tv3#
PyTorch
DataLoader
需要一个DataSet
,因为你可以签入docs。正确的方法是用途:这是一个用于 Package Tensor的数据集,其中每个样本将通过沿着第一维索引Tensor来检索。参数
*tensors
表示具有与第一维相同大小的Tensor。另一个
class torch.utils.data.Dataset
是一个抽象类。下面是如何将numpy数组转换为Tensor:
已接受的答案使用
torch.Tensor
构造。如果您有一个像素为0-255的图像,则可以使用以下构造:或torchvision
to_tensor
方法,该方法将PIL图像或numpy.ndarray转换为Tensor。但是这里有个小技巧你可以直接把你的numpy数组。
这也可以,但如果打印
d1.dataset
,请键入:虽然我们实际上需要使用CUDA的Tensor,所以最好使用Tensor来填充
DataLoader
。