1.收敛速度慢
解决:
- 设置合理的初始化权重w和偏置b
模型训练本质上就是调整w和b的过程,好的开始是成功的一半。(为什么不0初始化?哪三种常用的初始化方法?https://blog.csdn.net/weixin_43167121/article/details/88176101) - 优化学习率
学习率太小,会增加迭代次数,加大训练时间。但学习率太大,容易越过局部最优点,降低准确率。
所以应当一开始学习率大一些,从而加速收敛。训练后期学习率小一点,从而稳定的落入局部最优解。使用Adam,Adagrad等自适应优化算法,就可以实现学习率的自适应调整,从而保证准确率的同时加快收敛速度。 - 网络节点输入值正则化 batch normalization
神经网络训练时,每一层的输入分布都在变化。不论输入值大还是小,我们的学习率都是相同的,这显然是很浪费效率的。而且当输入值很小时,为了保证对它的精细调整,学习率不能设置太大。那有没有办法让输入值标准化得落到某一个范围内,比如[0, 1]之间呢,这样我们就再也不必为太小的输入值而发愁了。
当然有!可以对每一个mini-batch数据内部进行标准化,使他们规范化到[0, 1]内。这就是Batch Normalization。 它在每个卷积层后,使用一个BN层,从而使得学习率可以设定为一个较大的值。 - 采用更先进的网络结构&#x