使用批量训练时,有四个概念:
- 训练数据的大小(size of train data):指的是用于训练模型的全部数据量。
- 批量大小(batch size):指的是每次迭代训练时,模型所处理的样本数量。
- 轮次(epoch):是指全部的训练数据被完整地传入模型的次数。
- 迭代次数(iteration):表示完成训练所需要的更新参数的次数。在每个轮次中,模型会处理多个批次的数据,每处理完一个批次就进行一次参数更新,这个更新的次数即为迭代次数。
迭代次数的计算公式如下(能整除的情况):
如果不能整除,在 PyTorch 中默认是加一。公式为:
PyTorch 文档:https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader
其中,drop_last 参数默认为 False,也就是不丢弃,将剩余样本组成一个不完整的批次:
from torch.utils.data import DataLoader
train_loader = DataLoader(dataset, batch_size=batch_size, shuffle=True, drop_last=False)
批量大小的考虑:
- 较小的批量大小可能导致每个批次的梯度具有较大的方差,这可能导致训练过程中的震荡。
- 较大的批量大小可能导致模型陷入局部最优解,因为每个批次之间的数据分布相似。
选择合适的批量大小需要考虑到数据集的大小、模型的复杂度、计算资源的限制等因素,通常需要通过实验来验证确定最佳的批量大小,从而实现训练过程稳定性、模型泛化性能以及计算效率的提升。
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】