关于自定义后向传播错误
Traceback (most recent call last):
File "/xxx/xxx/xxx.py", line 217, in <module>
output = L.forward(x, label)
File "/xxx/xxx/xxx.py", line 201, in forward
return xxx()(input, target, self.weight)
RuntimeError: save_for_backward can only save input or output tensors, but argument 2 doesn't satisfy this condition
分析:出现这个错误是我在forward中改变了weight这个变量,weight=weight.div(scalar),这导致参数不符合save_for_backward的要求。
解决:在forward中要改变weight的值可以使用就地运算weight.div_(scalar)。这样即改变也weight的值,又不改变原本的指向。
遇到其它问题会更行,待续…
本文介绍了一个关于自定义后向传播实现中常见的错误——在PyTorch中使用save_for_backward时,尝试保存非输入或输出张量的变量。通过实例展示了如何正确地在前向传播过程中修改权重,避免引发运行时错误。
3276

被折叠的 条评论
为什么被折叠?



