zoukankan      html  css  js  c++  java
  • 一文读懂神经网络训练中的Batch Size,Epoch,Iteration

    一文读懂神经网络训练中的Batch Size,Epoch,Iteration

    作为在各种神经网络训练时都无法避免的几个名词,本文将全面解析他们的含义和关系。

    1. Batch Size

    释义:批大小,即单次训练使用的样本数

    为什么需要有 Batch_Size :batch size 的正确选择是为了在内存效率和内存容量之间寻找最佳平衡

    Batch size调参经验总结:

    • 相对于正常数据集,如果Batch_Size过小,训练数据就会非常难收敛,从而导致underfitting。

    • 增大Batch_Size,相对处理速度加快。

    • 增大Batch_Size,所需内存容量增加(epoch的次数需要增加以达到最好结果)。

    • 这里我们发现上面两个矛盾的问题,因为当epoch增加以后同样也会导致耗时增加从而速度下降。

    2. Epoch

    1个epoch表示过了1遍训练集中的所有样本,即表示所有训练样本的一次forward+一次
    backward。

    3. Iteration

    Iteration在有的网络中也叫training step,中文或称之为“迭代”,具体来说:一次迭代 = 一次forward + 一次backward。换句话说,就是“取若干数据,通过网络推理得到结果,调整网络权值”这样整体的过程称为一次迭代。(多说一句,这里所取的若干数据,就是batch size所决定的)

    迭代是重复反馈的动作,神经网络中我们希望通过迭代进行多次的训练以到达所需的目标或结果。

    每次迭代后将更新1次网络结构的参数,每一次迭代得到的结果都会被作为下一次迭代的初始值。

    4. Batch size,Epoch, Iteration的小结

    总结

    • 一次epoch=所有训练数据forward+backward后更新参数的过程。
    • 一次iteration= batch size个训练数据的forward+backward后更新参数过程。

    这里举一个小栗子。假设有一个数据集含200000个样本,取1000次迭代为1个epoch,那么每次迭代的batch-size需要设为200。这样1个epoch相当于过了200000个训练样本。

    参考文章

    1. https://www.zhihu.com/question/43673341
    2. https://www.plob.org/article/13244.html
  • 相关阅读:
    java学习之成员内部类
    上海 炉石面试题及解析
    利用RALL机制来事项String类的赋值操作
    关于信号打断正在读取终端的read与select来监视0文件描述符的问题
    ubuntu16.04开机花屏蓝屏解决方案
    gcc 中__thread 关键字的示例代码
    成长、责任和公司的关系
    团队贡献分
    团队如何做决定
    分析app的NABCD
  • 原文地址:https://www.cnblogs.com/molinchn/p/13268511.html
Copyright © 2011-2022 走看看