问题
loss值 出现 Nan ( 爆炸或者数值非常高 )
原因
- 训练不收敛
- 学习率太大
- 深度网络结构设计有问题
- 训练集中有脏数据
- 0做除数
- 在log 中 0或负数做底----常出现在计算loss函数 和 激活函数
- 值越界
- 池化层中步长比核尺寸大
解决办法
- 输入数据归一化(减均值,除方差,或者加入normalization,将其转化成0-1之间的数据)
- 层数较多的情况,各层都做batch_nomorlization
- Weights权重使用tf.truncated_normal(0, 0.01, [3,3,1,64])生成
- 更换参数初始化方法
- 减小学习率,低于现有学习率1-10倍
- 减小batch size
- 循环网络,加入梯度截断 gradient clipping
- 换激活函数
- 换loss损失函数