pytorch排查loss值出现nan的情况及解决

 更新时间:2025年09月02日 09:07:13   作者:Anthony_CH  
在实验室训练中,损失值出现nan是因条件筛选导致空列表,触发torch.log()错误,通过包裹训练代码快速定位问题,最终解决方案是添加1e-7常量确保数值稳定性,避免计算异常

问题

  • 跑实验室时出现了损失值为nan(下图所示)

排查

因为有一些判断所以用了

bd_index = torch.where(s_label != o_label)[0] 

语句来选出满足条件的下标,这样做可能返回一个空列表(不满足条件时),因为后续有用到 torch.log() 函数来计算,所以如果是空列表放进去就会出现loss = nan,但是不同情况得具体分析,

排查的过程最好用的就是使用语句

with torch.autograd.detect_anomaly(): 

来将训练代码包裹起来(如下图所示),这样就能迅速定位到出现空值的点(平时训练时得去掉,会拖慢速度)

最终定位到 torch.log() 处,最终解决办法就是加上常量 log_prob = torch.log(prob + 1e-7) 这样就不会空值

  • 运行成功:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python模拟简单电梯调度算法示例

    Python模拟简单电梯调度算法示例

    这篇文章主要介绍了Python模拟简单电梯调度算法,涉及Python线程、队列、时间延迟等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • Python获取指定文件夹下的文件名的方法

    Python获取指定文件夹下的文件名的方法

    本篇文章主要介绍了Python获取指定文件夹下的文件名的方法,本文采用os.walk()和os.listdir()两种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Python 代码实现各种酷炫功能

    Python 代码实现各种酷炫功能

    这篇文章主要介绍了Python 代码实现各种酷炫功能,生成二维码、生成词云、批量抠图、文字情绪识别等功能分享,需要的小伙伴可以参考一下
    2022-03-03
  • Python爬虫之Scrapy环境搭建案例教程

    Python爬虫之Scrapy环境搭建案例教程

    这篇文章主要介绍了Python爬虫之Scrapy环境搭建案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • python Tkinter实时显示数据功能实现

    python Tkinter实时显示数据功能实现

    这篇文章主要介绍了python Tkinter实时显示数据功能实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Python urllib 入门使用详细教程

    Python urllib 入门使用详细教程

    urllib 库,它是 Python 内置的 HTTP 请求库,不需要额外安装即可使用,这篇文章主要介绍了Python urllib 入门使用,需要的朋友可以参考下
    2022-11-11
  • pytorch 两个GPU同时训练的解决方案

    pytorch 两个GPU同时训练的解决方案

    这篇文章主要介绍了pytorch 两个GPU同时训练的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 浅谈Python的字典键名可以是哪些类型

    浅谈Python的字典键名可以是哪些类型

    本文主要介绍了Python的字典键名可以是哪些类型,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Python mplfinance库绘制金融图表实现数据可视化实例探究

    Python mplfinance库绘制金融图表实现数据可视化实例探究

    mplfinance(Matplotlib Finance),它是基于Matplotlib的库,专门用于创建金融图表和交互式金融数据可视化,本文将深入介绍 mplfinance,包括其基本概念、功能特性以及如何使用示例代码创建各种金融图表
    2024-01-01
  • Python批量将csv文件转化成xml文件的实例

    Python批量将csv文件转化成xml文件的实例

    将 csv 格式转换成xml格式有许多方法,可以用数据库的方式,也有许多软件可以将 csv 转换成xml。但是比较麻烦,本文利用 Python 一键批量将 csv 文件转化成 xml 文件。
    2021-05-05

最新评论