Advertisement

The .grad attribute of a non-leaf tensor is being accessed.

阅读量:

前言:

在对计算模型梯度进行调试的过程中,突然出现如下提示信息::1: UserWarning: 此处正在访问一个非叶张量的.grad属性,该属性在执行autograd.backward()时将不会被填充。如果确实需要获取非叶张量的梯度,请在该非叶张量上使用.retain_grad()方法。若误操作访问了非叶张量,请确保访问的是对应的叶张量。更多详情可参见github.com/pytorch/pytorch/pull/30531。

(持续更新中,)

1更:2022.08.30

一、问题分析框架构建

博主希望获取loss计算过程中某一变量的梯度信息,经核查发现该变量的requires_grad()属性值为True,但尝试输出其梯度时却触发了上述警告信息。

该错误提示的大致含义如下:

在调用autograd.backward()的过程中,若试图访问非叶张量的.grad属性,则不会为其填充梯度信息。如果确实需要获取非叶张量的梯度,应在该张量上调用.retain_grad()方法。若误操作导致访问了非叶张量,请确认所访问的是叶张量。

简而言之:

仅当requires_grad()为True时,并不能保证能够成功获取梯度信息,还需进一步判断is_leaf属性。当is_leaf属性值为False时,表明该变量属于非叶张量,此时将触发上述错误提

全部评论 (0)

还没有任何评论哟~