pytorch损失反向传播后梯度为none的问题

 更新时间:2021年05月12日 17:03:03   作者:lczygogogo  
这篇文章主要介绍了pytorch 出现损失反向传播后梯度为none的问题,具有很好的参考价值,如有错误或未考虑完全的地方,望不吝赐教

错误代码:输出grad为none

a = torch.ones((2, 2), requires_grad=True).to(device)
b = a.sum()
b.backward()
print(a.grad)

由于.to(device)是一次操作,此时的a已经不是叶子节点了

修改后的代码为:

a = torch.ones((2, 2), requires_grad=True)
c = a.to(device)

b = c.sum()
b.backward()
print(a.grad)

类似错误:

self.miu = torch.nn.Parameter(torch.ones(self.dimensional)) * 0.01

应该为

self.miu = torch.nn.Parameter(torch.ones(self.dimensional) * 0.01)

补充:pytorch梯度返回none的bug

pytorch1.4.0如果使用了view方法,reshape方法

tensor即使设置了requires_grad,反向传播之后, x返回没有grad梯度,为none

不知道其他版本有无此bug

补充:PyTorch中梯度反向传播的注意点

在一个迭代循环中

optimizer.zero_grad()语句的位置比较随意,只要放在loss.backward()前面即可,它的作用是将梯度归零,否则会在每一个迭代中进行累加,

loss.backward()的作用是反向传播,计算梯度,optimizer.step()的功能是优化器自动完成参数的更新。

optimizer.zero_grad()
loss.backward()
optimizer.step()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python基本语法练习实例

    python基本语法练习实例

    下面小编就为大家带来一篇python基本语法练习实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Python实现自动上京东抢手机

    Python实现自动上京东抢手机

    这篇文章主要为大家详细介绍了Python实现自动上京东抢手机的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python中使用threading.Event协调线程的运行详解

    Python中使用threading.Event协调线程的运行详解

    这篇文章主要介绍了Python中使用threading.Event协调线程的运行详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python利用机器学习算法实现垃圾邮件的识别

    Python利用机器学习算法实现垃圾邮件的识别

    今天教大家利用简单的机器学习算法实现垃圾邮件识别,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Python 正则表达式匹配字符串中的http链接方法

    Python 正则表达式匹配字符串中的http链接方法

    今天小编就为大家分享一篇Python 正则表达式匹配字符串中的http链接方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python如何在for循环中同时使用两个变量与两个控制条件

    Python如何在for循环中同时使用两个变量与两个控制条件

    Python是一种广泛使用的编程语言,其提供了许多强大的方法来处理代码,Python for循环是其中一种非常有用的方法,下面这篇文章主要给大家介绍了关于Python如何在for循环中同时使用两个变量与两个控制条件的相关资料,需要的朋友可以参考下
    2024-03-03
  • Django中session进行权限管理的使用

    Django中session进行权限管理的使用

    本文主要介绍了Django中session进行权限管理的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • 关于pandas.DataFrame的类SQL操作

    关于pandas.DataFrame的类SQL操作

    这篇文章主要介绍了关于pandas.DataFrame的类SQL操作方式,具有很好的参考价值,希望对大家有所帮助,
    2023-08-08
  • 详细聊聊为什么Python中0.2+0.1不等于0.3

    详细聊聊为什么Python中0.2+0.1不等于0.3

    最近在学习过程中发现在计算机JS时发现了一个非常有意思事,0.1+0.2的结果不是0.3,而是0.30000000000000004,下面这篇文章主要给大家介绍了关于为什么Python中0.2+0.1不等于0.3的相关资料,需要的朋友可以参考下
    2022-12-12
  • python3使用scrapy生成csv文件代码示例

    python3使用scrapy生成csv文件代码示例

    这篇文章主要介绍了python3使用scrapy生成csv文件代码示例,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12

最新评论