gpt4 book ai didi

python - 无法理解自定义 Theano Op 中的 grad() 方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:18:50 29 4
gpt4 key购买 nike

当我阅读有关创建新操作的文档时,我无法理解示例中的 grad() http://deeplearning.net/software/theano/extending/extending_theano.html#example-op-definition 。为什么他们返回 output_grads[0] * 2 而不是 2output_grads[0] 代表什么?

如果output_grads[0]表示相对于输入x的链导数,在下一个例子中http://deeplearning.net/software/theano/extending/extending_theano.html#example-props-definition ,为什么 grad() 返回 a * output_grads[0] + b (应该是 self.a * output_grads[0] + self.b)而不是 self.a * output_grads[0]

更复杂的自定义操作怎么样?像y = exp(x1)/(a*(x1**3)+log(x2)),它的grad()怎么写?此外,如果输入是向量或矩阵,如何编写 grad()?

最佳答案

the extended .grad() documentation指出,output_grads 参数是

dC/df

(其中 f 是您的 Op 的输出之一,C 是您调用 theano.tensor 的成本.grad(...))

该页面还指出 Op.grad(...) 方法必须返回

dC/dx=(dC/df)(df/dx)

(其中 xOp 的输入)

我认为 ax+b 示例是错误的。如果你看一下实际的代码,例如 SigmoidXLogX ,看起来只是实现了链式法则。

<小时/>

免责声明:到目前为止,我还没有实现自定义 Op,我自己正在对此进行研究,这就是我的理解。

关于python - 无法理解自定义 Theano Op 中的 grad() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43671292/

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