일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 파이썬
- 데이터분석
- mnist
- 컴퓨터비전
- 데이터EDA
- 케라스
- 빅분기
- AI
- machinelearning
- 코딩테스트
- resnet
- 통계
- 딥러닝
- 인공지능
- 머신러닝
- 의학논문
- Deeplearning
- 의학통계
- 데이터사이언스
- TensorFlow
- 데이터모델링
- 데이터분석가
- Python
- Keras
- 데이터전처리
- 빅분기실기
- CNN
- 빅데이터분석기사
- 텐서플로우
- ComputerVision
- Today
- Total
Be Brave, Be Humble
NumericalDerivative_Example 본문

[예제1] f(x) = x**2 미분
In [ ]:
import numpy as np
def numerical_derivative(f, x):
delta_x = 1e-4
grad = np.zeros_like(x)
it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
while not it.finished:
idx = it.multi_index
print("debug 3. idx = ", idx, ", x[idx] = ", x[idx])
tmp_val = x[idx]
x[idx] = float(tmp_val) + delta_x
fx1 = f(x) # f(x+delta_x)
x[idx] = float(tmp_val) - delta_x
fx2 = f(x) # f(x-delta_x)
grad[idx] = (fx1 - fx2) / (2*delta_x)
x[idx] = tmp_val
it.iternext()
return grad
In [ ]:
# 입력변수 1 개인 함수 f(x) = x**2
def func1(W):
x = W
return x**2
# lambda function 정의
f = lambda W : func1(W) # f(W) = func1(W)
W = np.array([3.0]) # 미분하려는 현재 값
# x = 3.0 에서의 편미분 값
ret = numerical_derivative( f, W )
print('type(ret) = ', type(ret), ', ret_val = ', ret) # type(ret): 디버그 위해 타입 확인
debug 3. idx = (0,) , x[idx] = 3.0
type(ret) = <class 'numpy.ndarray'> , ret_val = [6.]
[예제 2] f(x,y) = 2x + 3xy + y^3 편미분
In [ ]:
# 입력변수 2 개인 함수 f(x, y) = 2x + 3xy + y^3
def func2(W):
x = W[0]
y = W[1]
return ( 2*x + 3*x*y + np.power(y,3) )
# lambda function 정의
f = lambda W : func2(W)
# (x,y) = (1.0, 2.0) 에서의 편미분 값
W = np.array([1.0, 2.0])
ret = numerical_derivative( f, W )
print(ret)
debug 3. idx = (0,) , x[idx] = 1.0
debug 3. idx = (1,) , x[idx] = 2.0
[ 8. 15.00000001]
[예제 3]
In [ ]:
# 입력변수 4 개인 함수
# f(w,x,y,z) = wx + xyz + 3w + zy^2
# input_data 는 행렬
def func(input_data):
w = input_data[0, 0]
x = input_data[0, 1]
y = input_data[1, 0]
z = input_data[1, 1]
return ( w*x + x*y*z + 3*w + z*np.power(y,2) )
# lambda function 정의
f = lambda W : func(W)
# 입력을 2X2 행렬로 구성함
input_data = np.array([ [1.0, 2.0], [3.0, 4.0] ])
ret = numerical_derivative( f, input_data )
print(ret)
debug 3. idx = (0, 0) , x[idx] = 1.0
debug 3. idx = (0, 1) , x[idx] = 2.0
debug 3. idx = (1, 0) , x[idx] = 3.0
debug 3. idx = (1, 1) , x[idx] = 4.0
[[ 5. 13.]
[32. 15.]]
'AI > Computer Vision' 카테고리의 다른 글
Keras_Simple_Linear_Regression_Exercise_Sequential (0) | 2022.08.01 |
---|---|
multi_variable_linear_regression (0) | 2022.08.01 |
Logistic_XOR_Regression (0) | 2022.07.25 |
LogisticRegression_Example (0) | 2022.07.25 |
LinearRegression_Example (0) | 2022.07.25 |
Comments