添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
腼腆的桔子  ·  Pandas ...·  11 月前    · 
喝醉的镜子  ·  ThinkPHP ...·  1 年前    · 
任性的包子  ·  flying-saucer/iText ...·  2 年前    · 
酒量小的充电器  ·  system.text.encoding.a ...·  2 年前    · 
飘逸的米饭  ·  gcc error - ...·  2 年前    · 

在训练网络的时候,常常会出现loss出现非常明显的剧烈抖动情况,虽然大多数情况可以继续训练下去,但是实际上还是预示着问题存在。而且,有不同维度的问题,这也需要不同的解决方法,但是具体究竟是哪一种,还得具体情况具体分析。

  1. 是否找到合适的loss函数 :在深度学习里面,不同的loss针对的任务是有不同的,有些loss函数比较通用例如L1/L2等,而如perceptual loss则比较适合在图像恢复/生成领域的任务上。当loss出现问题的适合,想一想,是不是loss设置的有问题,别人在此领域的任务的方法是否也使用和你一样的loss。
  2. batch size是否合适 :batch size的问题一般是较大会有比较好的效果,一是更快收敛,二是可以躲过一些局部最优点。但是也不是一味地增加batch size就好,太大的batch size 容易陷入sharp minima,泛化性不好。较小的batch size可能会使得网络有明显的震荡。
  3. 是否使用合适的激活函数 :一般来说,都几乎使用RELU作为全局激活函数,尽可能少的使用sigmoid激活函数(激活范围太小),容易造成梯度弥散、消失
  4. 学习率 :学习率太大,一步前进的路程太长,会出现来回震荡的情况,但是学习率太小,收敛速度会比较慢。
  5. 是否选择合适的优化算法 :一般来说,我都使用Adam作为优化器(默认参数)。如果经过仔细调整的SGD算法性能可能更好,但是时间上不太允许这样做。
  1. **通过提前终止确定最优模型:**在训练的过程中,可能会出现训练到最后的精度竟然还不如前面的epoch高,那么可以直接终止训练,然后将之前的model作为best model,之后使用这个model即可
    在这里插入图片描述
  2. Regularization(正则化) :通过正则化进行约束,一般的方法可以通过优化器的权重衰减方法,即训练到后期,通过衰减因子使权重的梯度下降越来越缓慢。或者BN、Dropout以及L1/L2
  3. 调整网络结构 :一句话,你的网络结构出了问题,是错误的,没有科学性的
  4. 增加训练数据量 :数据集太小太少,且没有进行数据增强,就可能导致过拟合
    参考来自:
    https://www.cnblogs.com/Mrzhang3389/p/10164241.html
前言在训练网络的时候,常常会出现loss出现非常明显的剧烈抖动情况,虽然大多数情况可以继续训练下去,但是实际上还是预示着问题存在。而且,有不同维度的问题,这也需要不同的解决方法,但是具体究竟是哪一种,还得具体情况具体分析。无过拟合是否找到合适的loss函数:在深度学习里面,不同的loss针对的任务是有不同的,有些loss函数比较通用例如L1/L2等,而如perceptual loss则比较适合在图像恢复/生成领域的任务上。当loss出现问题的适合,想一想,是不是loss设置的有问题,别人在此领域的任
用LSTM做时间序列预测时发现训练刚开始时 loss (MSE)下降很快,accuracy(调整R方)上升也很快,但到后面 loss 总体上下降变慢,并且时有波动,accuracy甚至会经常出现负值,然后又回弹至正值。经查阅资料和反复调试,发现是batch size太小的问题,原来的batch size是2,现在改成4 batch size为2时 loss 的变化如下 batch size 为4时 loss 的变化如下,虽然也有波动,比如在910epoch左右 loss 冲到了0.06,但总体上比batch size稳定
可以看到虽然还没学习多少,但是我的val_ loss 已经开始出现了 震荡 的情况。但总体趋势还是在下降说明还有学习的空间。 loss 和val_ loss 的变化趋势反映的情况如下,可供参考: loss 下降,val_ loss 下降:训练网络正常,最好情况。 loss 下降,val_ loss 稳定:网络过拟合化,可以使用正则化和Max pooling。 loss 稳定,val_ loss 下降:数据集有严重问题,建议重新选择。 loss 稳定,val_ loss 稳定:学习过程遇到瓶颈,需要减小学习率或批量数目,可以减少学习率。
表现:训练过程中 loss 值一直 震荡 ,没有下降趋势 原因一:梯度消失;多因为网络深度过深,接近输入层的参数 梯度过小; 解决方法:调整网络,激活函数relu,batch normal等 原因二:训练数据分布不均匀;这种情况对训练数据shuffle即可 原因三:学习率过大或者过小;过大就会在 loss 最小处周围 震荡 ,通常一开始会有一定下降;过小就是收敛太慢 tensorflow 2中可以直接打出每个step的梯度值,便于发现问题
Batch Gradient Descent:全量处理 Mini-Batch Gradient Descent:处理部分数据 Stochastic Gradient Descent:每次只取一个数据训练 import numpy as np import torch x = np.random.random(size=(100, 8)) linear = torch.nn.Linear(in_features=8, out_features=1) sigmoid = torch.nn.Sigmoid()
Low-light images enhancement/暗光/低光/微光增强系列:Attention-guided Low-light Image Enhancement(详解) 10056