下面是在做深度学习的一些经验总结,希望对大家有所帮助,同时欢迎大家批评指正。
1. 观察Loss胜于观察准确率,Loss设计要合理,对比训练集和验证集的Loss。
2. Loss选择。一般来说分类就是Softmax, 回归就是L2的Loss。但是要注意Loss的错误范围。
3. Relu可以很好的防止梯度弥散问题,当然最后一层的激活函数千万慎用relu,如果是分类的用softmax。
4. Batchnorm可以大大加快训练速度和模型性能。
5. Dropout防止过拟合,可直接设置为0.5,即一半一半,测试的时候把dropout关掉。
6. 选择Adam 优化函数,收敛速度非常快的一个优化函数。
7. 准确率虽然是评测指标, 但是训练过程中还是要注意Loss的。你会发现有些情况下, 准确率是突变的, 原来一直是0, 可能保持上千迭代, 然后突然变1。而Loss是不会有这么诡异的情况发生的, 毕竟优化目标是Loss。
8. Learning Rate设置合理。太大: loss爆炸, 或者太小: 半天loss没反映。
9. 对比训练集和验证集的loss。判断过拟合, 训练是否足够, 是否需要early stop的依据。