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中ConfigParser模块示例详解

    Python中ConfigParser模块示例详解

    有些时候在项目中,使用配置文件来配置一些灵活的参数是比较常见的事,因为这会使得代码的维护变得更方便,而ini配置文件是比较常用的一种,今天介绍用ConfigParser模块来解析ini配置文件,感兴趣的朋友一起看看吧
    2023-01-01
  • Python日志模块logging基本用法分析

    Python日志模块logging基本用法分析

    这篇文章主要介绍了Python日志模块logging基本用法,结合实例形式分析了日志模块logging的功能、常用函数、相关使用技巧与注意事项,需要的朋友可以参考下
    2018-08-08
  • Python函数的迭代器与生成器的示例代码

    Python函数的迭代器与生成器的示例代码

    这篇文章主要介绍了Python函数的迭代器与生成器的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • pygame实现贪吃蛇游戏

    pygame实现贪吃蛇游戏

    这篇文章主要为大家详细介绍了pygame实现贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Python 抓取动态网页内容方案详解

    Python 抓取动态网页内容方案详解

    这篇文章主要介绍了Python 抓取动态网页内容方案详解,首先通过Chrome的工具来进行分析,然后再使用python进行处理,最终得到我们需要的内容,非常的方便,这里也算是给大家提供一个思路
    2014-12-12
  • python实现简单的井字棋小游戏

    python实现简单的井字棋小游戏

    这篇文章主要为大家详细介绍了python实现简单的井字棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Python实现获取磁盘剩余空间的2种方法

    Python实现获取磁盘剩余空间的2种方法

    这篇文章主要介绍了Python实现获取磁盘剩余空间的2种方法,结合具体实例形式分析了Python操作计算机硬件的相关实现技巧,需要的朋友可以参考下
    2017-06-06
  • Python不支持 i ++ 语法的原因解析

    Python不支持 i ++ 语法的原因解析

    这篇文章主要介绍了Python不支持 i ++ 语法的原因解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Numpy中np.dot与np.matmul的区别详解

    Numpy中np.dot与np.matmul的区别详解

    本文主要介绍了Numpy中np.dot与np.matmul的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 在Linux下使用Python的matplotlib绘制数据图的教程

    在Linux下使用Python的matplotlib绘制数据图的教程

    这篇文章主要介绍了在Linux下使用Python的matplotlib绘制数据图的教程,matplotlib基于Numpy进行科学计算上的延伸,需要的朋友可以参考下
    2015-06-06

最新评论