backward函数会只保留叶子节点的grad,其他节点其实也会计算,但是计算过后会抹掉,如果想保留一次,就使用retain_variables=True。

上面的例子是标量,可以直接backward(),但是如果是向量,就得加参数在括号里,不然报错。加的参数一般是与y形状一致的全1向量。如果想利用这个计算雅可比矩阵,可以参考pytorch中 backward 机制理解_backward 标量-CSDN博客

Pytorch中backward()的思考记录_backward函数只能对标量操作-CSDN博客

详解Pytorch 自动微分里的(vector-Jacobian product) - 知乎

关于向量与标量示例,可以看Pytorch中的.backward()方法 - 知乎

在此我想说,这里一直都用全一,(貌似是梯度方向),不要纠结在这上面。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐