1. 模型训练经验
- ==weights和bias的初始化对训练影响很大==;
- ==batch_size先拿小的试一下,比如16,8,1等,调大了收敛太慢==;
- ==学习率不宜过大,初始可设置为1e-3==;
网络不收敛
- 数据问题(根本)
数据少,数据分布差,数据质量差;
数据预处理:归一化等;
可以先简化数据,数据弄成“弱智”般的最简单的数据,收敛后再慢慢加数据复杂度;
2. 学习率过大
3. batch size过小或过小
可以先小后大;
过大了权重更新太慢,太小了不容易收敛;
- 模型太复杂
一般是在小的数据集上线训练小网络,确定这种结构work之后再在更大的数据集上train更深的网络;
如何调试
打印权重和梯度,看是不是0梯度
tensorboard中可以看到各权重具体的值的分布