解决pytorch 交叉熵损失输出为负数的问题

作者:*小呆 时间:2022-04-29 10:17:33 

网络训练中,loss曲线非常奇怪

解决pytorch 交叉熵损失输出为负数的问题

交叉熵怎么会有负数。

经过排查,交叉熵不是有个负对数吗,当网络输出的概率是0-1时,正数。可当网络输出大于1的数,就有可能变成负数。

所以加上一行就行了

out1 = F.softmax(out1, dim=1)

补充知识:在pytorch框架下,训练model过程中,loss=nan问题时该怎么解决?

当我在UCF-101数据集训练alexnet时,epoch设为100,跑到三十多个epoch时,出现了loss=nan问题,当时是一脸懵逼,在查阅资料后,我通过减小学习率解决了问题,现总结一下出现这个问题的可能原因及解决方法:

1. 减小整体学习率。学习率比较大的时候,参数可能over shoot了,结果就是找不到极小值点;减小学习率可以让参数朝着极值点前进;

2. 改变网络宽度。有可能是网络后面的层参数更新异常,增加后面层的宽度试试;

3. 改变层的学习率。每个层都可以设置学习率,可以尝试减小后面层的学习率试试;

4. 数据归一化(减均值,除方差,或者加入normalization,例如BN、L2 norm等);

5. 加入gradient clipping;

6 输入数据含有脏数据,即NaN,一般当使用实际业务的真实数据时,容易出现脏数据。

来源:https://blog.csdn.net/qq_39575835/article/details/104353889

标签:pytorch,交叉熵损失,负数
0
投稿

猜你喜欢

  • asp如何向客户端发送提示“出错信息”?

    2010-06-09 18:50:00
  • 如何使用 SQL Server 数据库查询累计值

    2008-12-03 15:27:00
  • 利用Python如何制作好玩的GIF动图详解

    2023-03-02 10:47:47
  • php防止sql注入示例分析和几种常见攻击正则表达式

    2023-11-23 17:01:02
  • php控制文件下载速度的方法

    2023-07-19 00:21:30
  • 讲解MySQL数据库的数据类型和建库策略

    2008-12-17 14:39:00
  • MongoDB为用户设置访问权限

    2023-07-16 06:03:52
  • 用Python逐行分析文件方法

    2022-07-10 10:17:49
  • oracle10g 数据备份与导入

    2009-06-10 18:21:00
  • python实现猜数字游戏(无重复数字)示例分享

    2023-12-15 19:48:46
  • python办公自动化之excel的操作

    2023-11-20 14:01:01
  • python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法

    2023-05-25 23:48:29
  • GO语言的IO方法实例小结

    2023-09-17 08:47:24
  • linux下安装php扩展memcache的方法

    2023-11-21 19:49:02
  • python中lambda函数 list comprehension 和 zip函数使用指南

    2021-08-28 22:16:21
  • Python面向对象之静态属性、类方法与静态方法分析

    2021-03-28 15:14:22
  • asp显示左边的n个字符自动识别汉字的函数

    2007-09-13 12:16:00
  • pytorch简单实现神经网络功能

    2022-02-21 23:29:49
  • Python基于多线程实现ping扫描功能示例

    2023-08-02 17:30:09
  • pycharm如何设置自动生成作者信息

    2021-01-21 22:20:58
  • asp之家 网络编程 m.aspxhome.com