インストール
pipでインストール出来ます。
サンプル(1)
f(x) = 3x2という関数の一次微分および二次微分を計算してみます。
from autograd import grad import matplotlib.pyplot as plt import numpy as np def f(x): return 3 * x**2 df = grad(f) d2f = grad(df) x = np.linspace(-3, 3, 100) plt.plot(x, f(x), label='f') plt.plot(x, np.vectorize(df)(x), label='df') plt.plot(x, np.vectorize(d2f)(x), label='d2f') plt.legend() plt.show()
以下のようなグラフが表示されます。
サンプル(2)
もちろん、多変数関数の微分も可能です。
ナブラとヘッセ行列を求めてみます。
簡単のため、二次形式の関数をサンプルとして使います。
from autograd import grad as nabla from autograd.convenience_wrappers import hessian import numpy as np def f(x): Q = [[3, 2], [2, 7]] return 1./2 * np.dot(x, np.dot(Q, x)) x = np.array([1.0, 2.0]) print (nabla(f)(x)) print (hessian(f)(x))
出力結果を見ると、正しく微分できていることが確認できます。
$ python sample_autograd.py [ 7. 16.] [[ 3. 2.] [ 2. 7.]]
0 件のコメント:
コメントを投稿