分析acc/loss上下波动不稳定的原因?

一、batchsize过小

学习博客
什么是Batch: 一般被翻译为批量,设置batch_size的目的让模型在训练过程中每次选择批量的数据来进行处理。
为什么需要设定batch: 一般机器学习或者深度学习训练过程中的目标函数可以简单理解为在每个训练集样本上得到的目标函数值的求和,然后根据目标函数的值进行权重值的调整,大部分时候是根据梯度下降法来进行参数更新的。在没有使用Batch Size之前,这意味着网络在训练时,是一次把所有的数据(整个数据库)输入网络中,然后计算它们的梯度进行反向传播,由于在计算梯度时使用了整个数据库,所以计算得到的梯度方向更为准确。但在这情况下,计算得到不同梯度值差别巨大,难以使用一个全局的学习率。
如何设置BatchSize: 设置BatchSize的时候,首先选择大点的BatchSize把GPU占满,观察Loss收敛的情况,如果不收敛,或者收敛效果不好则降低BatchSize,一般常用16,32,64等。
在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

二、epoch过小

学习博客
一个epoch表示: 所有的数据送入网络中, 完成了一次前向计算 + 反向传播的过程。随着epoch 数量的增加, 权重更新迭代的次数增多, 曲线从最开始的不拟合状态, 进入优化拟合状态, 最终进入过拟合。
epoch 如何设置: 大小与数据集的多样化程度有关, 多样化程度越强, epoch 越大。

epoch与batchsize关系式 = 完成一次epoch 需要的batch 个数=iterations=数据总数/ batch_size

你可能感兴趣的:(学习零碎,深度学习,机器学习,人工智能)