gpt4 book ai didi

python - theano T.grad() 错误 : not part of computational graph

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:01 26 4
gpt4 key购买 nike

代码:

a = T.vector()
b = T.vector()

loss = T.sum(a-b)

dy = T.grad(loss, a)
d2y = T.grad(loss, dy)

f = theano.function([a,b], y)
print f([.5,.5,.5], [1,0,1])

输出:

theano.gradient.DisconnectedInputError: grad method was asked to compute
the gradientwith respect to a variable that is not part of the
computational graph of the cost, or is used only by a non-differentiable
operator: Elemwise{second}.0

图的导数为何不是图的一部分?这就是为什么使用 scan 来计算 hessian 矩阵吗?

最佳答案

这里:

d2y = T.grad(loss, dy)

您正在尝试计算损失相对于dy的梯度。然而,损失仅取决于 ab 的值,而不取决于 dy,因此会出现错误。只有计算损失相对于实际影响其值的参数的偏导数才有意义。

在 Theano 中计算 Hessian 矩阵的最简单方法是使用 theano.gradient.hessian便利功能:

d2y = theano.gradient.hessian(loss, a)

请参阅文档 here另一种手动方法结合使用 theano.gradtheano.scan

在您的示例中,Hessian 矩阵将是一个 3x3 的零矩阵,因为损失相对于 t.r.t 的偏导数。 a 独立于 a(它只是一个由 1 组成的向量)。

关于python - theano T.grad() 错误 : not part of computational graph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35163744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com