Torchviz可视化PyTorch图:单输入subbackward0节点是否无作用?
关于PyTorch计算图中subbackward0节点的说明
你看到的这个subbackward0 .... alpha 1节点并不是无作用的,原因如下:
- 这个节点对应减法操作的反向传播逻辑,之所以只显示一条输入边,是因为减法的其中一个操作数不需要计算梯度(比如是固定常数、或者被
detach()剥离了计算图)。PyTorch构建反向计算图时,只会保留参与梯度传递的输入分支,无梯度的输入不会在图中显示。 - 节点里的
alpha=1对应反向传播的梯度系数:假设原操作是x - y,如果y无梯度,那么反向时上游梯度会直接乘以1传递给x,这个节点就是负责完成这个梯度传递的逻辑。
举个简单代码例子验证:
import torch from torchviz import make_dot # 仅a需要梯度,b是无梯度张量 a = torch.tensor([3.0], requires_grad=True) b = torch.tensor([1.0]) out = a - b # 可视化计算图 graph = make_dot(out)
运行后生成的计算图里,反向节点就会和你看到的一样,只有一条输入边,但它确实在梯度回传中起到了传递梯度的作用。
内容的提问来源于stack exchange,提问作者Jan Egil Glæstad
相关产品推荐
相关产品推荐

