学术, 机器学习

批量训练中迭代次数的计算

使用批量训练时,有四个概念:

  • 训练数据的大小(size of train data):指的是用于训练模型的全部数据量。
  • 批量大小(batch size):指的是每次迭代训练时,模型所处理的样本数量。
  • 轮次(epoch):是指全部的训练数据被完整地传入模型的次数。
  • 迭代次数(iteration):表示完成训练所需要的更新参数的次数。在每个轮次中,模型会处理多个批次的数据,每处理完一个批次就进行一次参数更新,这个更新的次数即为迭代次数。

迭代次数的计算公式如下(能整除的情况):

\mathrm{iteration} = \frac{\mathrm{size\_of\_train\_data}}{\mathrm{batch\_size}} \times\mathrm{epoch}

如果不能整除,在 PyTorch 中默认是加一。公式为:

\mathrm{iteration} = (\frac{\mathrm{size\_of\_train\_data}}{\mathrm{batch\_size}}+1) \times\mathrm{epoch}

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)

批量大小的考虑:

  • 较小的批量大小可能导致每个批次的梯度具有较大的方差,这可能导致训练过程中的震荡。
  • 较大的批量大小可能导致模型陷入局部最优解,因为每个批次之间的数据分布相似。

选择合适的批量大小需要考虑到数据集的大小、模型的复杂度、计算资源的限制等因素,通常需要通过实验来验证确定最佳的批量大小,从而实现训练过程稳定性、模型泛化性能以及计算效率的提升。

695 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code