注册门户网站,重庆网站的制作价格,wordpress oss 插件,wordpress教程+下载本文主要谈谈自己对step#xff0c;epoch#xff0c;batch_size这几个常见参数的理解。 最近在调试模型的时候#xff0c;发现在使用keras.optimizer.adam时#xff0c;模型在添加了新的一层2D卷积层后难以收敛#xff0c;在不调整初始权重矩阵的情况下#xff0c;想通过…本文主要谈谈自己对stepepochbatch_size这几个常见参数的理解。 最近在调试模型的时候发现在使用keras.optimizer.adam时模型在添加了新的一层2D卷积层后难以收敛在不调整初始权重矩阵的情况下想通过衰减学习率来使loss function的收敛性更好。
tf.keras.optimizers.Adam(learning_rate0.001,beta_10.9,beta_20.999,epsilon1e-07,amsgradFalse,nameAdam,**kwargs
)可以看到adam这个optimizer在没有其他参数条件的情况下默认学习率为固定0.001。
为了调整学习率在keras的文档中找到了下述示例代码代码的意思很简单初始学习率为0.01衰减需要的step为10000衰减率为0.9即每次经过10000 steps学习率就衰减为原来的0.9。
lr_schedule keras.optimizers.schedules.ExponentialDecay(initial_learning_rate1e-2,decay_steps10000,decay_rate0.9)
optimizer keras.optimizers.SGD(learning_ratelr_schedule)那么这里的step和我们在编译模型时选的epoch与batch_size有什么关系呢。 需要理解的是在训练模型的过程中一个step其实指的就是一次梯度更新的过程。例如在每个epoch中有2000个用于训练的图片我们选取了batch_size100那么我们就需要2000 images / 100 (images/step) 20 steps来完成这个epoch。
换个角度从神经网络的角度来说我们都知道机器学习的最终目的就是最小化Loss function损失函数。L(W)1K∑t1Kl(yt,ytetoile)L(W) \frac{1} {K}\sum_{t1}^{K}l(y_t,y_{t_{etoile}})L(W)K1∑t1Kl(yt,ytetoile)。 我们会发现这里的loss function 是K组训练数据的平均误差这里的K其实就是我们在训练模型时选择的batch_size即将多个训练数据整合到一起再通过最小化他们的平均误差来优化权重矩阵。那么经过每个batch_size的训练我们计算梯度更新权重的过程就称为一个step。
有了对于step的更深刻的认识我们就可以轻松地根据step自行调整学习率了。