迁移学习中一些参数的调整

学习率learning_rate

x += - learning_rate * dx

其中x表示权重参数,dx表示梯度。可以看出,学习率影响了每次参数更新值的大小

  • 调整方法
    使用一个固定的学习率来进行训练的同时观察验证集准确率,每当验证集准确率停止上升,就乘以一个常数(比如0.5)来降低学习率。一般初始可以设为0.1。

接下来一起介绍几个参数的概念:

epoch

表示跑完全部图片的一次过程。epoch越大,训练的次数越多,但也可能造成过拟合的问题。

  • 调整方法
    一般可设置为50,如果不收敛,可以适当增加,每次增加5。

batchsize

表示一次迭代输入的训练图片的个数。在合理范围内,增大 Batch_Size 的好处:内存利用率提高了,大矩阵乘法的并行化效率提高。跑完一次 epoch(全数据集)所需的迭代次数减少,对于相同数据量的处理速度进一步加快。在一定范围内,一般来说 Batch_Size 越大,其确定的下降方向越准,引起训练震荡越小。

太小可能存在的问题:震荡不收敛

太大可能存在的问题:1 显存爆炸 2 收敛不到谷底

  • 调整方法
    由于最终收敛精度会陷入不同的局部极值,因此 Batch_Size 增大到某些时候,达到最终收敛精度上的最优。
    可以设为100,如果显存不够用,就减小一点。

step

表示训练的迭代次数(一次迭代是指参数更新一次的过程)。和batchsize、epoch有一定的关系。

  • 调整方法
    可根据epoch和batchsize计算出来。

三者的关系

batchsize * step = epoch * image_num

用于数据增强的参数

  • random_crop 随机切割
  • random_scale 随机尺寸变化
  • random_brightness 随机亮度调整

进行数据增强主要是为了解决样本量不足和样本不均衡的问题,这二者都可能会导致模型的过拟合。由于是迁移学习,我们不需要太大的数据进行训练,因此主要关注的是样本不均衡的问题。

分类方法通常是以总体分类准确率作为学习目标,当样本不均衡的时候,分类模型就会过多的关注多数类,从而使得少数类样本的分类性能下降。上述列出了几种数据增强的方法,但这些方法在有些任务中有可能会丢失掉原始图像的特征,因此最好的解决办法还是重新采样训练集。

一些其他参数

eval_step_interval

几个step输出一次准确率,主要用于观察训练过程

  • 调整方法
    一般是一个epoch显示一次,可以自己计算一下对应的step。

猜你喜欢

转载自blog.csdn.net/shanshangyouzhiyangm/article/details/80825008