当前位置:   article > 正文

pytorch之加载数据集Dataset and DataLoader_dataloader(self.test_dataset,batch_size=100,shuffl

dataloader(self.test_dataset,batch_size=100,shuffle=true)

一.概念:epoch,batch size,iterations 

1.Epoch(时期):一个epoch指代所有的训练样本送入神经网络中完成一次前向传播及反向传播的过程。 再通俗一点,一个Epoch就是将所有训练样本训练一次的过程。

2.Batch(批 / 一批样本):将整个训练样本分成若干个Batch。
Batch Size(批大小):每批样本的大小。也就是在一次前向和反向传播中训练的样本数量,且Batch Size 和Batch numbers不是同一个概念

3.Iteration(一次迭代):训练一个Batch就是一次Iteration。所以,所谓的iterations就是完成一次epoch所需的batch个数,上面提到的Batch numbers就是iterations。

4.mini-batch:卡的数量gif.latex?%5Ctimesmini-batch=batch

总结:one epoch = numbers of iterations = N = 训练样本的数量/batch size

一次epoch 总处理数量 = iterations次数 * batch_size大小

举例:假设有一个包含10000个样本的数据集,并且您选择的Batch Size为1000和100个Epoch。这意味着数据集将分为10个Batch,有10个iterations,每个Batch有1000个样本。每训练一批1000个样本后,模型权重将更新。这也意味着一个epoch将涉及10个Batch更新。有100个Epoch,模型将传递整个数据集100次。在整个过程中,总共有10000个Batch。

二.DataLoader

  1. from torch.utils.data import DataLoader
  2. train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True)
  3. test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True)

shuffle=True指数据会被打乱,如下图所示:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDlubPlubPml6DlpYflsI_luIjlprk,size_20,color_FFFFFF,t_70,g_se,x_16

举例:

  1. torch.utils.data.DataLoader(dataset,batch_size = 1,
  2. shuffle = None,sampler = None,batch_sampler = None,
  3. num_workers = 0,collate_fn = None,pin_memory = False,
  4. drop_last = False,timeout = 0,worker_init_fn = None,
  5. multiprocessing_context = None,generator = None,
  6. prefetch_factor = 2,persistent_workers = False,
  7. pin_memory_device = '')

重要参数:

  • dataset ( Dataset ) – 从中加载数据的数据集。

  • batch_size ( int , optional ) – 每批要加载多少样本(默认值:1)。

  • shuffle ( bool , optional ) – 设置为True在每个 epoch 重新打乱数据(默认值:False)

  • num_workers ( int , optional ) –是否多进程读取机制,用于数据加载的子进程数。0表示数据将在主进程中加载​​。(默认为0

  • drop_last ( bool , optional ) –当样本数不能被batchsize整除时, 是否舍弃最后一批数据。True:如果数据集大小不能被批次大小整除,则设置为丢弃最后一个不完整的批次。False:如果数据集的大小不能被批大小整除,那么最后一批的batch size变小。(默认为False,即不丢弃数据

  • 举例:假设样本总数80, Batchsize是8, 那么1Epoch=10 Iteration。 假设样本总数是87, Batchsize是8, 如果drop_last=True, 那么1Epoch=10Iteration, 如果等于False, 那么1Epoch=11Iteration, 最后1个Iteration有7个样本。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/318257
推荐阅读
相关标签
  

闽ICP备14008679号