logo
Home 特权副本 Loss 相关问题

Loss 相关问题

  • 2026-01-21 21:16:14

loss 不收敛

欠拟合

特征:训练集上loss始终和初始大小相当,accuracy很低

网络拟合能力不足

每一个batch使用相同的数据训练,检查loss和acc是否有变化来判断改进:增加网络深度(层数),宽度(神经元数量)网络配置问题

权重初始化是否合理

初始化方式备注全零初始化 Zeros造成网络对称,所有神经元进行相同参数更新全1初始化 Ones造成网络对称,所有神经元进行相同参数更新初始化为固定值value Constant造成网络对称,所有神经元进行相同参数更新随机正态分布初始化 RandomNormal随机均匀分布初始化 RandomUniform截尾高斯分布初始化 TruncatedNormalVarianceScaling用随机正交矩阵初始化Orthogonal使用单位矩阵初始化 IdentiyLeCun均匀分布初始化方法 lecun_uniformLeCun正态分布初始化方法 lecun_normalGlorot正态分布初始化方法 glorot_normalGlorot均匀分布初始化 glorot_uniform一种均值为0,以0为中心的对称区间均匀分布的随机数;接近于0的均匀分布会导致梯度消失He正态分布初始化 he_normalHe均匀分布初始化 he_uniform使用适当的激活函数

激活函数备注ReLU一般用于卷积层、全连接层tanh一般用于循环层softmax一般用于全连接层做输出层sigmoid不常用使用适当的优化器和学习率

未进行归一化导致尺度不平衡,误差增大

人工构造少量数据反复训练,看是否下降。若不下降,则可能脚本有问题,若下降,则超参可能有问题

梯度检查

loss 为nan,inf

100个iter内出现可能是学习率过高若为rnn之类的网络,可能是梯度爆炸,可增加梯度截断(gradient clipping)梯度消失:导数特别小,导致连乘接近无穷小(输入数据太小,或输出数据落在激活函数饱和区),使loss不下降,但不会出现nan和inf梯度爆炸:导数特别大,导致连乘特别大,超出表示范围(输入数据未归一化(减均值,除方差,加入BN,L2等normalization方法)),可能出现infbatchNorm层很多时,检查tensor输入该层后是否变为nan(可能因为训练集和验证集是不同的分布,使移动均值和移动方差为nan,可设置track_runing_stats=False禁用)每个batch前梯度要清零optimizer.zero_grad0做除数,0或负数做对数(loss正常下降,突然出现nan。可对预测数据增加最小值偏移,避免小于等于0),根号下要大于0,同时要加个Epsilon,因为开根号的导数,变量在分母上,不加Epsilon导数就成了nan计算loss的数组越界涉及指数计算时算得无穷:$\frac{e{x}}{e{y}}=\frac{INF}{INF}=NAN$ ,可减去最大值处理label缺失输入数据就含有NAN(使用简单的网络读取输入进行检查)使用不同精度数据,loss超过精度类型最大范围pooling步长大于核尺寸loss 为负

https://blog.csdn.net/qq_43733107/article/details/128915638

Previous Post
芯片组驱动的作用是什么?是否必须安装?
Copyright © 2088 战力飙升活动特区 - 专属特权限时解锁 All Rights Reserved.
友情链接