PyTorch:如何将DataLoader用于自定义数据集
python
pytorch
torch
6
0

如何在您自己的数据(不只是torchvision.datasets )上使用torch.utils.data.Datasettorch.utils.data.DataLoader

有没有办法使用它们在TorchVisionDatasets上使用的内置DataLoaders以便在任何数据集上使用?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

是的,那是可能的。只需自己创建对象,例如

import torch.utils.data as data_utils

train = data_utils.TensorDataset(features, targets)
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)

featurestargets是张量。 features必须为2D,即矩阵,其中每行代表一个训练样本, targets可能是1D或2D,具体取决于您要预测标量还是矢量。

希望有帮助!


编辑 :对@sarthak的问题的答复

基本上是。如果创建类型为TensorData的对象,则构造函数将调查特征张量(实际上称为data_tensor )和目标张量(称为target_tensor )的第一个维度是否具有相同的长度:

assert data_tensor.size(0) == target_tensor.size(0)

但是,如果您希望随后将这些数据馈入神经网络,则需要小心。尽管卷积层可以像您一样处理数据,但是(我认为)所有其他类型的层都希望数据以矩阵形式给出。因此,如果遇到这样的问题,那么一个简单的解决方案就是使用method view将4D数据集(以某种张量,例如FloatTensor )转换为矩阵。对于您的5000xnxnx3数据集,它看起来像这样:

2d_dataset = 4d_dataset.view(5000, -1)

(值-1告诉PyTorch自动确定第二维的长度。)

收藏
评论

您可以通过扩展data.Dataset类来轻松完成此data.Dataset 。根据API ,您所要做的就是实现两个功能: __getitem____len__

然后,可以使用API和@ pho7的答案中所示的DataLoader包装数据集。

我认为ImageFolder类是一个参考。 在这里查看代码。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号