当前位置: 首页 > 面试题库 >

PyTorch:如何将DataLoader用于自定义数据集

韶镜
2023-03-14
问题内容

如何利用torch.utils.data.Datasettorch.utils.data.DataLoader自己的数据(而不仅仅是torchvision.datasets)?

有没有一种方法可以使用DataLoaders它们TorchVisionDatasets用于任何数据集的内置方法?


问题答案:

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

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)

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

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

(该值-1告诉PyTorch自动找出第二维的长度。)



 类似资料:
  • 本文向大家介绍pytorch Dataset,DataLoader产生自定义的训练数据案例,包括了pytorch Dataset,DataLoader产生自定义的训练数据案例的使用技巧和注意事项,需要的朋友参考一下 1. torch.utils.data.Dataset datasets这是一个pytorch定义的dataset的源码集合。下面是一个自定义Datasets的基本框架,初始化放在__

  • 我正试图修改这个来自的前馈网络https://github.com/yunjey/pytorch-tutorial/blob/master/tutorials/01-basics/feedforward_neural_network/main.py 使用我自己的数据集。 我定义了一个自定义数据集,其中两个1微米数组作为输入,两个标量对应的输出: 我已更新超参数以匹配新的输入大小(2) 我还改变了t

  • 本文向大家介绍Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作,包括了Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作的使用技巧和注意事项,需要的朋友参考一下 【源码GitHub地址】:点击进入 1. 问题描述 之前写了一篇关于《pytorch Dataset, DataLoader产生自定义的训练数据》的博客,但存在一个问题,我们不

  • 本文向大家介绍Pytorch 实现数据集自定义读取,包括了Pytorch 实现数据集自定义读取的使用技巧和注意事项,需要的朋友参考一下 以读取VOC2012语义分割数据集为例,具体见代码注释: VocDataset.py Train.py 以上这篇Pytorch 实现数据集自定义读取就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍pytorch 自定义数据集加载方法,包括了pytorch 自定义数据集加载方法的使用技巧和注意事项,需要的朋友参考一下 pytorch 官网给出的例子中都是使用了已经定义好的特殊数据集接口来加载数据,而且其使用的数据都是官方给出的数据。如果我们有自己收集的数据集,如何用来训练网络呢?此时需要我们自己定义好数据处理接口。幸运的是pytroch给出了一个数据集接口类(torch.uti

  • 本文向大家介绍pytorch中的自定义数据处理详解,包括了pytorch中的自定义数据处理详解的使用技巧和注意事项,需要的朋友参考一下 pytorch在数据中采用Dataset的数据保存方式,需要继承data.Dataset类,如果需要自己处理数据的话,需要实现两个基本方法。 :.getitem:返回一条数据或者一个样本,obj[index] = obj.getitem(index). :.len