本篇记录使用pytorch过程中踩到的各种坑!
声明损失函数时忘记加括号
1 | loss_fn = nn.BCELoss # 应该是 nn.BCELoss() |
通过索引赋值后,梯度还能正常反向传播吗?
- 答案:能.
验证代码
1 | import torch |
验证输出
1 | tensor([0.3073, 0.0680, 0.3627, 0.0659]) |
经过 x -> cache -> sum 的计算并反向传播后,可见x的值如上所示有所变化,因此索引将前向传播中间结果赋给Tensor,再在Tensor上做后续运算,能够实现到达输入张量的反向传播!