自動微分(2)
$ y(x) = x^2 - 2x - 3の$ x=2における勾配を求めてみよう。この場合、
$ \left. \frac{\partial y}{\partial x} \right|_{x=2} = \left. \frac{\partial }{\partial x}\left(x^2-2x-3\right)\right|_{x=2} = 2x - 2 |_{x=2} = 2
となり、この値がルートノードの勾配 x.grad に格納される。
code:autograd.py
import torch as pt
x0 = 2.0
x = pt.tensor(x0, dtype=pt.float, requires_grad=True)
y = x**2 -2*x - 3
y.backward()
print('x:', x)
print('xの勾配:\n', x.grad)
各項の計算を分解し、逐次的に処理を行うようにしても同様の結果が得られる。
code:autograd.py
import torch as pt
x0 = 2.0
x = pt.tensor(x0, dtype=pt.float, requires_grad=True)
# x**2 -2*x - 3 の計算を行う
y = x*x
y = y - 2*x
y = y - 3
y.backward()
print('x:', x)
print('xの勾配:\n', x.grad)
/icons/hr.icon
※ ブラウザのバックボタンで戻る