Pythorch自动加载在收集输入后失败,并显示“RuntimeError:Differentied input is unreachable”(运行时错误:无法访问差异化输入)

2024-04-23 09:52:55 发布

您现在位置:Python中文网/ 问答频道 /正文

Pythorch 0.3.1版

编辑:我把这个问题改写得更简单,因为我已经缩小了bug的范围。在

我有一些变量:

x = ag.Variable(torch.ones(1, 1), requires_grad = True)
y = ag.Variable(torch.ones(1, 1), requires_grad = True)
z = ag.Variable(torch.ones(1, 1), requires_grad = True)

然后创建一个变量来表示它们的连接:

^{pr2}$

然后我试着用导数:

ag.grad(f, x, retain_graph=True, create_graph=True)

这很好,并按预期返回1。y和z也是一样的

但是

ag.grad(f, w, retain_graph=True, create_graph=True)

返回错误:RuntimeError:无法访问差异化输入

当然这是有意义的-w在f的声明中没有显式使用。但是,我希望一行代码可以生成类似[1; 1; 1]的输出。在

假设我想方便地将我的变量批处理在一起,然后一次获取整个shebang的梯度,而不是独立地处理变量(这会使簿记成为一场噩梦)。有什么办法能得到我想要的结果吗?在


Tags: true编辑createonestorchvariablebuggraph
1条回答
网友
1楼 · 发布于 2024-04-23 09:52:55

像这样的操作是有效的还是您想保留f = x + y + z?在

w = torch.cat([x, y, z])
f = w[0] + w[1] + w[2]
print (ag.grad(f, w, retain_graph=True, create_graph=True))

# output (tensor([[ 1.],[ 1.],[ 1.]]),)

相关问题 更多 >