loss_func = nn.MSELoss()
loss = loss_func(val, target)

最近在跑一个项目,计算loss时用了很普通的MSE,在训练了10到300个batch时,会出现loss tensor([[nan nan nan nan]]类似的情况。对这个异常的loss进行梯度下降,会导致net的输出变为nan。在网上查了解决方案,都不好用:

  • 学习率过大;
  • loss过小(或者说除以了0 / 计算了 log(0));
  • 存在脏数据输入NaN

试过上述方法,却同样无效的小伙伴可以考虑:

  • 自己手写 loss function ,在临界值处改为线性函数,知乎链接:【PyTorch】梯度爆炸、loss在反向传播变为nan;
  • 或者参考我下面的方案。

这里我观察了临界值,打了90分钟的print,发现我的问题出在target上。

我的 target 计算公式,可能会得到 inf 的结果,导致无法正常的梯度下降。可以考虑:

  • 检查 target 是否正确;
  • 计算了 target 后,将其改为自己需要的值,如下。
target[target == float("Inf")] = 0

但请注意该方法在数学上的可行性。

【解决方案】pytorch中loss变成了nan | 神经网络输出nan | MSE 梯度爆炸/梯度消失相关推荐

  1. 通过PyTorch中的可视化理解卷积神经网络

    [全文下载方式]: 关注公众号后台回复关键词: 20190120 在当今时代,机器已经成功地在理解,识别图像中的特征和对象方面达到了99%的准确度.我们每天都会看到它们,引用一些,识别相机中的脸部的智 ...

  2. 在PyTorch中使用卷积神经网络建立图像分类模型

    概述 在PyTorch中构建自己的卷积神经网络(CNN)的实践教程 我们将研究一个图像分类问题--CNN的一个经典和广泛使用的应用 我们将以实用的格式介绍深度学习概念 介绍 我被神经网络的力量和能力所 ...

  3. 神经网络训练中的梯度消失和梯度爆炸问题

    梯度消失和梯度爆炸 梯度消失的具体表现是,接近于输出层的权值更新相对正常,但是接近于输入层的权值基本不更新,或更新的非常慢.这样,深度网络的学习就等价于只有后几层的浅层网络的学习了. 梯度爆炸的具体的 ...

  4. pytorch中的pre-train函数模型引用及修改(增减网络层,修改某层参数等)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/whut_ldz/article/det ...

  5. 深度神经网络中的梯度丢失与梯度爆炸

    神经网络的反向传播 要理解梯度丢失(vanishing gradient)和梯度爆炸,首先需要理解神经网络的反向传播算法. 一般来说,训练一个神经网络需要很多个迭代.在每个迭代中,都包含两个步骤. 前 ...

  6. 深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)

    目录 一.概念与定义 二.损失函数/代价函数(loss) 三.梯度下降法 二维w与loss: 三维w与loss: 四.常用激活函数 1.softmax激活函数 2.sigmoid激活函数 3.tanh ...

  7. [深度学习-优化]梯度消失与梯度爆炸的原因以及解决方案

    首先让我们先来了解一个概念:什么是梯度不稳定呢? 概念:在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失,或会爆炸.这种不稳定性才是深度神经网络中基于梯度学习的根本问题. 产生梯度不稳 ...

  8. 梯度消失和梯度爆炸_出现梯度消失与梯度爆炸的原因以及解决方案

    在学习李宏毅老师机器学习的相关视频时,课下做了一个有关神经网络的小Demo,但是运行效果总是不尽人意,上网查询资料,才发现是梯度爆炸和梯度消失惹的祸.今天就让我们一起来学习一下梯度消失与梯度爆炸的概念 ...

  9. 时序数据采样、原始循环神经网络RNN、RNN梯度爆炸原因推导

    时序数据的采样 随机采样 每个样本是原始序列上任意截取的一段序列.相邻的两个随机小批量在原始序列上的位置不一定相毗邻.因此,我们无法用一个小批量最终时间步的隐藏状态来初始化下一个小批量的隐藏状态.在训 ...

最新文章

  1. FPGA设计心得(2)边沿检测的问题进一步说明(仿真中一定能得到上升沿的设计)
  2. Java学习3之成员方法及函数重载
  3. 青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿
  4. Python Pandas –合并,联接和串联
  5. PHP将mysql数据导出为Excel
  6. LibMesh 数据结构类
  7. android让文本输入框默认不获取焦点,android EditText 默认情况下不获取焦点(不弹出输入框)...
  8. 成为java高级工程师需要什么
  9. Timer的源码分析
  10. 计算机ae软件的入门教学视频教程,新手如何入门剪辑?3分钟教会你快速上手(附赠教程)...
  11. 游戏圈子--创业股份没拿到,你该怨谁?
  12. 获取通过谷歌Google广告下载AndroidAPP并登录用户数量
  13. java集合框架学习笔记
  14. 解决Windows 10 家庭中文版没有组策略编辑器的问题
  15. aws云服务器会自动扣费吗,亚马逊AWS云服务器不合理扣费怎么处理
  16. 栅格矩阵转换成邻接矩阵G2D函数
  17. c语言可乐,★★PC可乐吧系列教程之 -- QQ用户小心!C语言实现QQ密码大盗★★
  18. ZOJ 3716 - Ribbon Gymnastics
  19. No module named ‘tf_slim‘解决办法
  20. go每日新闻--2021-01-03

热门文章

  1. android自定义透明圆形,Android progressdialog自定义背景透明的圆形进度条类似于Dialog...
  2. 【MySQL】二进制分发安装
  3. webpack+vue解决前端跨域问题
  4. vue init失败解决方案-终极版
  5. 解决Linux下chrome无法播放flash问题
  6. 数据库主从数据一致性的几种解决方案
  7. 【Windows 10 v1703】解决桌面出现Removable Storage Devices的问题
  8. 遇见Python.h: No such file or directory的解决方法
  9. Android错误:无法在设备上安装* .apk *:超时
  10. Calendar与Date用法示例