码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一次解决Pytorch训练时损失和参数出现Nan或者inf的经历


    目前在做实验,参考了一个新的网络架构之后发现训练时损失出现Nan,参数了出现了inf的情况,先说说我的排查经历。

    首先肯定是打印损失,损失是最容易出现Nan的,有各种原因,网上也有很多解决办法,我这里就不一一赘述了,大伙打开CSDN就一搜就有很多很全的

    我的问题是在训练的中间参数中出现了inf,导致最终的损失为NaN或者inf

    用下面的代码判断参数是否出现了NaN或者inf

    1. for i in range(5): # exam是一个参数列表
    2. if torch.isnan(exeam[i]).any(): print('下表为{}的元素存在NaN!'.format(i))
    3. if torch.isinf(exeam[i]).any(): print('下表为{}的元素存在inf!'.format(i))

    确定是哪些为NaN之后,直接上Relu或者归一化,很可惜,没用。。。

    我参考的文章是这两篇

    Vision Transformers for Single Image Dehazing
    MixDehazeNet : Mix Structure Block For Image Dehazing Network
    这两篇文章中都用到了soft reconstruction。现在我还搞不明白这东西是啥
    模仿论文MixDehazeNet的代码,将生成的参数按照下面的代码计算下
    1. # feat是网络输出的结果,10通道
    2. K, atp, tran, B = torch.split(feat, (1, 3, 3, 3), dim=1)
    3. # x是网络的输入
    4. atp = K * atp - atp + x
    5. tran = K * tran - tran + x
    6. x = K * x - B + x
    7. # H, W是限定的尺寸
    8. rgb = x[:, :, :H, :W]
    9. atp = atp[:, :, :H, :W]
    10. tran = tran[:, :, :H, :W]

    这样一弄,问题就解决了

    我分析了下原因,代码中的参数出现NaN是因为出现了除以0的情况,加上了soft reconstruction之后(类似于全局残差,关键是后面加上x的那个操作)是原先为0的参数变得不为0了,除以0的情况消失了,就不存在NaN啦。

    我是做视觉方向的,全局残差机制(ResNet,FFA-Net)在视觉中可谓是有百利而无一害,所以这样加应该没问题的

    疑问

    soft reconstruction究竟是什么东西呢?网上的资料甚少,chatGPT也没有给出完全的定义。
    还请知道的大佬不吝赐教。
  • 相关阅读:
    使用Java构建RESTful API:实现灵活、可扩展的Web服务
    一种基于 RFID 技术的养老院人员定位解决方案
    JDK命令使用总结
    2.6 Go语言中的Map
    每日练习------有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
    HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能
    TEngine框架的导入与运行
    GEO生信数据挖掘(四)数据清洗(离群值处理、低表达基因、归一化、log2处理)
    为什么工业物联网平台要配备MQTT网关?|
    Apache SeaTunnel在VIP 中的使用
  • 原文地址:https://blog.csdn.net/qq_61567032/article/details/133553826
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号