使用MindSpore训练模型的检查loss曲线

 时间:2024-11-01 19:38:35

1、检查loss曲线很多精度问题会在网络训练过程中发现,常见的问题或现象有:·权重初始化不合理(例如初始值为0,初始值范围不合理等);·权重中存在过大、过小值;·权重变化过大;·权重冻结不正确;·权重共享不正确;·激活值饱和或过弱(例如Sigmoid的输出接近1,Relu的输出全为0);·梯度爆炸、消失;·训练epoch不足;·算子计算结果存在NAN、INF;·算子计算过程溢出(计算过程中的溢出不一定都是有害的)等。

2、上述这些问题或现象,有的可以通过loss表现出来,有的则难以观察。MindInsight提供了针对性的功能,可以观察上述现象、自动检查问题,帮助更快定位问题根因。例如:·MindInsight的参数分布图模块可以展示模型权重随训练过程的变化趋势;·MindInsight的张量可视模块可以展示张量的具体取值,对不同张量进行对比;·MindInsight调试器内置了种类丰富,功能强大的检查能力,可以检查权重问题(例如权重不更新、权重更新过大、权重值过大/过小)、梯度问题(例如梯度消失、梯度爆炸)、激活值问题(例如激活值饱和或过弱)、张量全为0、NAN/INF、算子计算过程溢出等问题。

使用MindSpore训练模型的检查loss曲线

3、通过MindInsight训练看板中的标量可视模块查看loss曲线大多数情况下,SummaryCollector会自动记录模型的loss曲线,可以通过MindInsight的标量可视模块查看。loss曲线能够反映网络训练的动态趋势,通过观察loss曲线,可以得到模型是否收敛、是否过拟合等信息。

使用MindSpore训练模型的检查loss曲线

4、通过MindInsight参数分布图可以查看训练过程中的权重变化情况大多数情况下,SummaryCollector会自动记录模型参数变化情况(默认记录5个参数),可以通过MindInsight的参数分布图模块查看。

使用MindSpore训练模型的检查loss曲线

5、通过MindInsight训练看板中的张量可视模块查看特定张量的具体取值张量不会被自动记录,如果想要通过MindInsight查看张量的具体取值,请使用TensorSummary算子。下面结合loss曲线的常见现象介绍使用MindInsight进行精度问题定位的思路。

6、loss跑飞loss跑飞是依宏氽墓指loss中出现了NAN、+/-INF或者特别大的值。loss跑飞一般意味着算法设计或搏皋咬夼实现存在问题。定位思路如下:回顾脚本、模型结构和数据,检查超参是否有不合理的特别大/特别小的取值,检查模型结构是否实现正确,特别是检查loss函数是否实现正确,检查输入数据中是否有缺失值、是否有特别大/特别小的取值。观察训练看板中的参数分布图,检查参数更新是否有明显的异常。若发现参数更新异常,可以结合调试器定位参数更新异常的原因。使用调试器模块对训练现场进行检查。若loss值出现NAN、+/-INF,可使用“检查张量溢出”条件添加全局监测点,定位首先出现NAN、+/-INF的算子节点,检查算子的输入数据是否会导致计算异常(例如除零)。若是算子输入数据的问题,则可以针对性地加入小数值epsilon避免计算异常。若loss值出现特别大的值,可使用“检查过大张量”条件添加全局监测点,定位首先出现大值的算子节点,检查算子的输入数据是否会导致计算异常。若输入数据本身存在异常,则可以继续向上追踪产生该输入数据的算子,直到定位出具体原因。若怀疑参数更新、梯度等方面存在异常,可使用“检查权重变化过大”、“检查梯度消失”、“检查梯度过大”等条件设置监测点,定位到异常的权重或梯度,然后结合张量检查视图,逐层向上对可疑的正向算子、反向算子、优化器算子等进行检查。

7、loss收敛慢loss收敛酾唐胱慝慢是指loss震荡、收敛速度慢,经过很长时间才能达到预期值,或者最终也无法收敛到预期值。相较于loss跑飞,造婷用痃loss收敛慢的数值特征不明显,更难定位。定位思路如下:回顾脚本、模型结构和数据,检查超参是否有不合理的特别大/特别小的取值,特别是检查学习率是否设置过小或过大,学习率设置过小会导致收敛速度慢,学习率设置过大会导致loss震荡、不下降;检查模型结构是否实现正确,特别是检查loss函数、优化器是否实现正确;检查输入数据的范围是否正常,特别是输入数据的值是否过小观察训练看板中的参数分布图,检查参数更新是否有明显的异常。若发现参数更新异常,可以结合调试器定位参数更新异常的原因。使用调试器模块对训练现场进程检查。可使用“检查权重变化过小”、“检查未变化权重”条件对可训练(未固定)的权重进行监测,检查权重是否变化过小。若发现权重变化过小,可进一步检查学习率取值是否过小、优化器算法是否正确实现、梯度是否消失,并做针对性的修复。可使用“检查梯度消失”条件对梯度进行监测,检查是否存在梯度消失的现象。若发现梯度消失,可进一步向上检查导致梯度消失的原因。例如,可以通过“检查激活值范围”条件检查是否出现了激活值饱和、Relu输出为0等问题。

8、其它loss现象若训练集上loss为0,一般说明模型出现了过拟合,请尝试增大训练集大小。

  • MATLAB仿真示波器图形导出时防止失真的方法
  • 信噪比计算公式是什么
  • 在VISIO如何使用弧半径工具?
  • 如何去点MATLAB绘图中图示的框
  • MATLAB添加色标(colorbar)
  • 热门搜索
    疫情手抄报内容怎么写 手抄报 春节 我们的节日春节手抄报 国庆节主题手抄报图片 科技手抄报内容大全 病毒手抄报内容写什么 关于春节的手抄报图片 我的2035年手抄报图片 儿童节手抄报简单漂亮 抗击疫情手抄报图片大全