当前位置:   article > 正文

Epoch、Batch、Batch size_epoch怎么设置

epoch怎么设置

知识来源知乎专栏作者风度、
作者眼睛里面进砖头了https://www.zhihu.com/question/456600260
epoch:
一个完整的数据集通过了神经网络一次并返回一次,称为一个epoch。所有的训练样本在神经网络中都进行了一次正向传播和反向传播,就是一个epoch将所有的训练集训练一次的过程。
Batch:
当一个epoch的样本数量太庞大,需要把它分成多个小块,也就是分成多个batch来进行训练。batch(批/一批样本),将整个训练样本分成若干个batch。
batch_size:
每批样本的大小
iteration:
一次迭代,训练一个Batch就是一次iteration

神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。使用有限的数据集,使用一个迭代过程即梯度下降优化学习过程。随着epoch数量增加,神经网络中的权重的更新次数也在增加,但是具体多少个epoch case by case
Batch_size:它的大小影响模型的优化程度和速度,直接影响到GPU内存的使用情况,GPU内存不大,数值最好设置小一点。
Batch_size增大,梯度变得准确,当非常准确的时候,在增加batch_size也没用了。

batch_size增大要到达相同的准确度,必须增大epoch:
batch size的大小影响的是训练过程中的完成每个epoch所需的时间和每次迭代(iteration)之间梯度的平滑程度。其实看完batch_size的解释,基本就应该知道epoch在发挥个什么作用了。说简单点,epoch影响的就是迭代计算的次数。
在不限内存的情况,应当用大点的batch_size, 进行模型优化,稳且快。在内存有限的情况下,减小batch_size的情况下应该相应减小的是learning_rate, 至于epoch怎么调,你就需要综合看你的loss下降情况与验证集的指标情况了。

  1. 若是loss还能降,指标还在升,那说明欠拟合,还没收敛,应该继续train,增大epoch。
  2. 若是loss还能再降,指标也在降,说明过拟合了,那就得采用提前终止(减少epoch)或采用weight_decay等防过拟合措施。
    3.若是设置epoch=16,到第8个epoch,loss也不降了,指标也不动了,说明8个epoch就够了,剩下的白算了。当然以上说的都是预设的一些理想情况,现实中往往没有这么明确,就如第三种情况,它可能只是到了局部最优点,并没有最优,你可能换个大点的batch_size,模型就调了个方向继续下坡,指标又能往上走点。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/156678
推荐阅读
相关标签
  

闽ICP备14008679号