将损失函数由均方误差改交叉熵,我们下面来寻找更好的改进方法。
调整学习率
当前SGD算法,LR=0.01,10轮后Loss=0.55。
学习率(步长)过大过小都会有影响。
- 学习率越小,损失函数的变化速度越慢,意味着我们需要花费更长的时间进行收敛。
- 学习率越大,只根据总样本集中的一个批次计算梯度,抽样误差会导致计算出的梯度不是全局最优的方向,且存在波动。在接近最优解时,过大的学习率会导致参数在最优解附近震荡,损失难以收敛。
在训练前,我们往往不清楚一个特定问题设置成怎样的学习率是合理的,因此在训练时可以尝试调小或调大,通过观察Loss下降的情况判断合理的学习率。
在加载数据后,循环前,设定学习率。
optimizer = fluid.optimizer.SGDOptimizer(learning_r