맛동산

1차원 백터의 기울기 구현 본문

파이썬/딥러닝 구현

1차원 백터의 기울기 구현

오지고지리고알파고포켓몬고 2017. 6. 8. 09:38

모든 변수의 편미분을 백터로 정리한 것이 기울기

 

다음은 1차원 백터의 기울기 구현(다차원이 아니므로 아직 큰 의미는 없음)

 

각 x에 대한 f(x+h) - f(x-h) / 2h의 적용(편미분)은 같음

 

 
import numpy as np

def f_2(x):
    return np.sum(x**2)

def numerical_gradient(f,x): # 3 4
    h = 1e-4
    grad = np.zeros_like(x) # x와 shape이 같은 0행렬(배열) 생성
    #print(grad)

    for idx in range(x.size):
        tmp_val = x[idx]
        #print(tmp_val)
        x[idx] = tmp_val + h
        #print(x[idx])
        fxh1 = f(x)
        print(fxh1)
        #print(tmp_val) # 강한복사가 되네?

        x[idx] = tmp_val - h
        fxh2 = f(x)
        print(fxh2)
        #print(7/2*h)
        # print((fxh1-fxh2) / (2*h))
        grad[idx] = (fxh1-fxh2) / (2*h)
        x[idx] = tmp_val

    return grad

#print(numerical_gradient(f_2, np.array([3,4])))
print(numerical_gradient(f_2, np.array([3.0,4.0])))

'파이썬 > 딥러닝 구현' 카테고리의 다른 글

수치 미분 구현  (0) 2017.06.08
예측 + 미니배치 + 오차  (5) 2017.06.04
미니배치 학습  (0) 2017.06.03
MNIST 파라미터  (0) 2017.06.03
평균 제곱 오차, 교차 엔트로피 오차 함수 구현  (0) 2017.06.03
Comments