赞
踩
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:卡的数量mini-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。
- from torch.utils.data import DataLoader
-
- train_dataloader = DataLoader(training_data, batch_size=64, shuffle=True)
- test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True)
shuffle=True指数据会被打乱,如下图所示:
举例:
- torch.utils.data.DataLoader(dataset,batch_size = 1,
- shuffle = None,sampler = None,batch_sampler = None,
- num_workers = 0,collate_fn = None,pin_memory = False,
- drop_last = False,timeout = 0,worker_init_fn = None,
- multiprocessing_context = None,generator = None,
- prefetch_factor = 2,persistent_workers = False,
- 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个样本。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。