y = 100 * (x1 - x0**2)**2 + (x0 - 1)**2 return y logs = [] x0 = Variable(np.array(0.0)) x1 = Variable(np.array(2.0)) iters = 1000 lr = 0.001 for i in range(iters): print(x0, x1) y = rosenbrock(x0, x1) x0.cleargrad() x1.cleargrad() y.backward() logs.append([float(x0.data), float(x1.data), float(y.data)]) x0.data -= lr * x0.grad x1.data -= lr * x1.grad # 図を描画 import matplotlib.pyplot as plt R = 0.01 x = np.arange(-2.0, 2.0, R) y = np.arange(-1.0, 3.0, R) X, Y = np.meshgrid(x, y)
import os, sys; sys.path.append(os.path.join(os.path.dirname(__file__), '..')) import numpy as np # Import core_simple explicitly from dezero.core_simple import Variable from dezero.core_simple import setup_variable setup_variable() def f(x): y = x ** 4 - 2 * x ** 2 return y def gx2(x): return 12 * x ** 2 - 4 logs = [] x = Variable(np.array(2.0)) iters = 200 for i in range(iters): print(i, x) y = f(x) x.cleargrad() y.backward() x.data -= 0.01 * x.grad