遇到的问题:在loss.backward之后求grad,对A求梯度,is leaf: True,requires_grad: True,但是grad:为什么是None?
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或者重新设计网络结构。解决 无用评论 打赏 举报
悬赏问题
- ¥20 iOS绕地区网络检测
- ¥15 python验证码滑块图像识别
- ¥15 根据背景及设计要求撰写设计报告
- ¥15 QT6颜色选择对话框显示不完整
- ¥20 能提供一下思路或者代码吗
- ¥15 用twincat控制!
- ¥15 请问一下这个运行结果是怎么来的
- ¥15 单通道放大电路的工作原理
- ¥30 YOLO检测微调结果p为1
- ¥15 DS18B20内部ADC模数转换器