模型训练技巧

2018-7-8

1. 卷积神经网络

主要针对tensorflow框架

  1. 使用 ADAM 优化器,如果你想要保存和恢复模型权重,请记住在设置完 AdamOptimizer 后设置 Saver,这是因为 ADAM 也有需要恢复的状态(即对应于每个权重的学习率),通常选0.001的学习率比较好,该优化器已经考虑了梯度衰减,所以不用手动添加,因此即使减小学习率也没有太多的帮助
  2. ReLU激活函数,可以解决梯度消失问题,并提高迭代的速度
  3. 输出层后不要加激活函数
  4. 使用方差缩放初始化,这种初始化方法比常规高斯分布初始化、截断高斯分布初始化及 Xavier 初始化的泛化/缩放性能更好
  5. 白化(归一化)输入数据,在训练中,令样本点的值减去数据集的均值,然后除以它的标准差
  6. 池化为了变换不变性(tansform invariance),使网络学习图像的某个部分,卷积神经网络的池化可以起到对特征平移、旋转和缩放的鲁棒性
  7. 批归一化可能隐藏初始化导致的梯度爆炸,所以可以将batch_size设置为1,删除归一化层观察梯度的变化

参考:构建深度神经网络,我有20条「不成熟」的小建议