pytorch自定义数据集加载方法

  

pytorch官网给出的例子中都是使用了已经定义好的特殊数据集接口来加载数据,而且其使用的数据都是官方给出的数据。如果我们有自己收集的数据集,如何用来训练网络呢?此时需要我们自己定义好数据处理接口。幸运的是pytroch给出了一个数据集接口类(torch.utils.data.Dataset),可以方便我们继承并实现自己的数据集接口。

  

<强> torch.utils.data

  

火炬的这个文件包含了一些关于数据集处理的类。

  

类torch.utils.data。数据集:一个抽象类,所有其他类的数据集类都应该是它的子类。而且其子类必须重载两个重要的函数:len(提供数据集的大小),getitem(支持整数索引)。

  

类torch.utils.data。TensorDataset:封装成张量的数据集,每一个样本都通过索引张量来获得。

  

类torch.utils.data。ConcatDataset:连接不同的数据集以构成更大的新数据集。

  

类torch.utils.data。数据集的子集(指标):获取指定一个索引序列对应的子数据集。

  

类torch.utils.data。DataLoader(数据集,batch_size=1,洗牌=False,取样器=None, batch_sampler=None, num_workers=0, collate_fn=& lt;函数default_collate>, pin_memory=False, drop_last=False,超时=0,worker_init_fn=None):数据加载器。组合了一个数据集和采样器,并提供关于数据的迭代器。

  

torch.utils.data。random_split(数据集,长度):按照给定的长度将数据集划分成没有重叠的新数据集组合。

  

类torch.utils.data.Sampler (data_source):所有采样的器的基类。每个采样器子类都需要提供__iter__方法以方便迭代器进行索引和一个len方法以方便返回迭代器的长度。

  

类torch.utils.data.SequentialSampler (data_source):顺序采样样本,始终按照同一个顺序。

  

类torch.utils.data.RandomSampler (data_source):无放回地随机采样样本元素。

  

类torch.utils.data.SubsetRandomSampler(指标):无放回地按照给定的索引列表采样样本元素。

  

类torch.utils.data。WeightedRandomSampler(重量、num_samples、更换=True):按照给定的概率来采样样本。

  

类torch.utils.data。batch_size BatchSampler(取样器,drop_last):在一个批处理中封装一个其他的采样器。

  

类torch.utils.data.distributed。DistributedSampler(数据集,num_replicas=None,排名=None):采样器可以约束数据加载进数据集的子集。

  

<>强自定义数据集

  

自己定义的数据集需要继承抽象torch.utils.data类类。数据集,并且需要重载两个重要的函数:__len__和__getitem__。

  

整个代码仅供参考。在__init__中是初始化了该类的一些基本参数;__getitem__中是真正读取数据的地方,迭代器通过索引来读取数据集中数据,因此只需要这一个方法中加入读取数据的相关功能即可,__len__给出了整个数据集的尺寸大小,迭代器的索引范围是根据这个函数得来的。

        进口火炬      类myDataset (torch.nn.data.Dataset):   def __init__(自我,数据源)   自我。数据源=数据源      def __getitem__(自我,指数):   元素=self.dataSource(指数)   返回元素   def __len__(自我):   返回len (self.dataSource)      train_data=https://www.yisu.com/zixun/myDataset(数据源)   之前      

<>强自定义数据集加载器

  

类torch.utils.data。DataLoader(数据集,batch_size=1,洗牌=False,取样器=None, batch_sampler=None, num_workers=0, collate_fn=& lt;函数default_collate>, pin_memory=False, drop_last=False,超时=0,worker_init_fn=None):数据加载器。组合了一个数据集和采样器,并提供关于数据的迭代器。

  

数据集(dataset)——需要加载的数据集(可以是自定义或者自带的数据集)。

  

batch_size -批量的大小(可选项,默认值为1)。

  

洗牌——是否在每个时代中洗牌整个数据集,默认值为假的。

  

取样器-定义从数据中抽取样本的策略。如果指定了,洗牌参数必须为假的。

  

num_workers -表示读取样本的线程数,0表示只有主线程。

  

collate_fn -合并一个样本列表称为一个批。

  

pin_memory——是否在返回数据之前将张量拷贝到CUDA。

  

drop_last (bool,可选)——设置是否丢弃最后一个不完整的批处理,默认为假的。

  

超时——用来设置数据读取的超时时间的,但超过这个时间还没读取到数据的话就会报错。应该为非负整数。

        train_loader=torch.utils.data。DataLoader(数据集=train_data batch_size=64,洗牌=True)

pytorch自定义数据集加载方法