10 2023-05-27 21:23 采纳率: 0%
浏览 17

loss.backward后求grad

遇到的问题:在loss.backward之后求grad,对A求梯度,is leaf: True,requires_grad: True,但是grad:为什么是None?

img

  • 写回答

2条回答 默认 最新

  • 瞬间动力 2023-05-27 22:26
    关注

    首先,需要保证对A进行的操作是可微分的,即对A进行的操作都可以在反向传播中求得其梯度。

    其次,需要保证在调用loss.backward()函数之前,loss应该是一个标量。如果loss不是标量,可以先将其汇总为标量,例如通过对其进行求和或者平均等操作。

    最后,可能是因为在执行loss.backward()时,存在已经被detach()的tensor或者函数。在这种情况下,grad将是None。解决办法是检查哪一个tensor或者函数产生了grad为None的问题,并尝试将其detach()改为requires_grad=False或者重新设计网络结构。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月27日

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器