TensorFlow神经网络模型不收敛的处理

版权声明:本文为博主CSDN Rosefun96原创文章。 https://blog.csdn.net/rosefun96/article/details/78873226

理论上,只要训练样本足够多,神经网络可以拟合原始数据分布。遇到神经网络不收敛问题,可以先检查下输入数据(归一化,数据量);然后,检查模型优化方法(学习率,优化器(优先Adam这些自适应学习率));最后是,检查模型结构设计(模型是否太简单,已经拟合好数据了,设计更深的网络看loss能否再下降;)等等,欢迎补充。

1、learning rate设大了

0.1~0.0001.不同模型不同任务最优的lr都不一样。

我现在越来越不明白TensorFlow了,我设置训练次数很大的时候,它一开始就给我“收敛”到一个值,后面的值都一样。

2、归一化

一般需要事先对数据进行 归一化、标准化。归一化是把所有的列都放到同一标准, 比如 每列减去 该列的均值。
标准化是,对各列之间的波动范围压缩到一定区间,比如 每列除于该列的标准差。
python sklearn 的 StandardScaler 可以实现归一、标准化。

3、数据处理

首先,确保数据打乱(shuffle),(数据不打乱,网络极大可能拟合前面的样本);然后,确保 标签 y与loss是搭配的,比如,分类模型的交叉熵 cross entropy,一般 target是一个向量, 输出的 predict label 是经过 Softmax层后的向量。


参考:

  1. 深度学习收敛问题
  2. 训练深度神经网络
展开阅读全文

没有更多推荐了,返回首页