解决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
投稿

猜你喜欢

  • python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序

    2022-04-23 02:28:25
  • Python生成二维码的教程详解

    2023-05-31 08:41:43
  • 分享15 超级好用得 Python 实用技巧

    2023-03-01 06:42:09
  • python采集博客中上传的QQ截图文件

    2021-03-03 16:45:25
  • 基于element-ui中el-select下拉框选项过多的优化方案

    2023-07-02 17:00:50
  • 对python中大文件的导入与导出方法详解

    2021-02-11 12:32:47
  • JavaScript实现淘宝网图片的局部放大功能

    2023-08-25 05:44:56
  • 详解Python3的TFTP文件传输

    2023-06-01 22:29:17
  • Python函数式编程指南(二):从函数开始

    2023-05-08 12:46:02
  • tensorflow 恢复指定层与不同层指定不同学习率的方法

    2023-08-27 23:09:14
  • python 共现矩阵的实现代码

    2021-12-22 14:42:33
  • Python中getattr函数和hasattr函数作用详解

    2022-10-29 15:42:11
  • golang中之strconv包的具体使用方法

    2024-02-01 00:03:20
  • Python实现的栈(Stack)

    2022-12-18 20:35:51
  • 用Python实现一个模仿UP主弹幕控制的直播间功能

    2023-02-24 18:13:27
  • Pycharm新建模板默认添加个人信息的实例

    2022-03-30 20:59:50
  • 用Python实现群发邮件

    2023-10-30 20:04:36
  • 解决python中set与dict的无序问题

    2021-02-24 14:50:31
  • php依赖注入知识点详解

    2024-05-02 17:33:00
  • sql中返回参数的值

    2024-01-29 11:29:00
  • asp之家 网络编程 m.aspxhome.com