M.L (p.127)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import numpy as np def function_2(x): return x[0] ** 2 + x[1] ** 2 # return np.sum(x**2) def numerical_gradient(f,x): h = 1e-4 grad = np.zeros_like(x) for idx in range(x.size): tmp_val = x[idx] x[idx] = tmp_val + h fxh1 = f(x) x[idx] = tmp_val - h fxh2 = f(x) grad[idx] = (fxh1 - fxh2) / (2*h) x[idx] = tmp_val return grad print(numerical_gradient(function_2, np.array([3.0,4.0]))) print(numerical_gradient(function_2, np.array([0.0,2.0]))) |
편미분을 간단히 하나의 함수로 나타내기 위한 코드
function_2 = x[0]^2 + x[1]^2 식을 가지고 있고,
numerical_gradient 를 보면 for문을 이용해 각 인덱스의 중앙차분을 구하여 grad에 저장하여 나타낸다.
