1、训练集的features有完全相同的数据,而labels各有不同;
2、神经网络没有初始化;
3、batch_size太小,造成收敛缓慢;
4、损失函数的两个张量形状不一致;
5、学习率lr太小。
解决办法:
1、如果训练集的features有完全相同的数据,训练时增加一定数量的随机noise拼接到features之后;
2、神经网络定义后需要进行初始化并将偏执清零,如果有使用RELu激活函数,建议使用He初始化;否则使用Xavier初始化;
3、在硬件GPU显存允许前提下,尽可能增加batch_size,例如4096、8192等;
4、仔细检查传入损失函数的两个张量形状,如果不一致的话,需要将其中某个低维度的张量升维以完全匹配另一个高维度的张量形状;
5、适当调整学习率:学习率太小会导致收敛缓慢,训练时间太长,容易陷入局部最优点或鞍点;学习率太大会导致训练震荡或发散,有梯度爆炸的可能。