使用自动grad的偏导数



我有一个函数,它接受一个多元参数x。这里 x = [x1,x2,x3]。假设我的函数如下所示: f(x,T( = np.dot(x,T( + np.exp(np.dot(x,T( 其中 T 是一个常量。

我有兴趣查找 df/dx1、df/dx2 和 df/dx3 函数。

我在使用 scipy diff 取得了一些成功,但我有点怀疑,因为它使用了数字差异。昨天,我的同事向我推荐了Autograd(github(。由于它似乎是一个流行的软件包,我希望这里有人知道如何使用此软件包获得部分差异化。我使用此库的初始测试表明,grad 函数仅对第一个参数进行微分。我不确定如何将其扩展到其他参数。任何帮助将不胜感激。

谢谢。

我在 autograd 源代码中找到了以下对 grad 函数的描述:

def grad(fun, x)
"Returns a function which computes the gradient of `fun` with
respect to positional argument number `argnum`. The returned
function takes the same arguments as `fun`, but returns the
gradient instead. The function `fun`should be scalar-valued. The
gradient has the same type as the argument."

所以

def h(x,t):
return np.dot(x,t) + np.exp(np.dot(x,t))
h_x = grad(h,0) # derivative with respect to x
h_t = grad(h,1) # derivative with respect to t

还要确保使用自动grad附带的numpy libaray

import autograd.numpy as np

而不是

import numpy as np

为了利用所有 Numpy 函数。

相关内容

  • 没有找到相关文章

最新更新