Deep Learning & AI/AI
(딥러닝 _ 온라인)쉽게 배우는 역전파 학습법 _ 수치 미분을 이용한 심층 신경망 학습
MINSU KANG
2021. 5. 9. 09:06
참고) 해당 포스팅은 패스트 캠퍼스 100% 환급 챌린지 미션 기록용 포스팅이며, 강좌 내용에 맞추어 포스팅함을 언급
클립명 : PART4)딥러닝의 3 STEP의 기초
쉽게 배우는 역전파 학습법 (STEP 2) - 학습법의 수식적 이해 - 2
쉽게 배우는 역전파 학습법 (STEP 2) - 수치 미분을 이용한 신경망 학습 - 1
쉽게 배우는 역전파 학습법 (STEP 2) - 학습법의 수식적 이해 - 1
본 포스팅에서는 수치 미분을 이용한 심층 신경망 학습에 대한 코드구현을 살펴본다. 일부 구현이고, 이와 관련된 두번째 포스팅에서 완성을 하는 단계로 거쳐나간다
import time
import numpy as np
epsilon = 0.0001
def _t(x):
return np.transpose(x)
def _m(A, B):
return np.matmul(A, B)
def sigmoid(x):
return 1 / (1+np.exp(-1))
def mean_squared_error(h, y):
return 1 / 2*np.mean(np.square(h - y))
class Neuron:
def __init__(self, W, b, a):
# Model Parameter
self.W = W
self.b = b
self.a = a
# Gradients
self.dW = np.zeros_like(self.W)
self.db = np.zeros_like(self.b)
def __call__(self, x):
return self.a(_m(_t(self.W), x) + self.b) # activation(W^T)x + b
class DNN:
def __init__(self, hidden_depth, num_neuron, num_input, num_output, activation = sigmoid):
def init_var(i, o):
return np.random.normal(0.0, 0.01, (i,o)), np.zeros((o,)) #출력 init W & init b
self.sequence = list()
#First hidden layer
W, b = init_var(num_input, num_neuron)
self.sequence.append(Neuron(W, b, activation))
# Hidden layers
for _ in range(hidden_depth - 1):
W, b = init_var(num_neuron, num_neuron)
self.sequence.append(Neuron(W, b, activation))
# Output layer
W, b = init_var(num_neuron, num_output)
self.sequence.append(Neuron(W, b, activation))
def __call__(self, x):
for layer in self.sequence:
x = layer(x)
return x
def calc_gradient(self, x, y, loss_func):
def get_new_sequence(layer_index, new_neuron): # 특정 layer을
new_sequence = list()
for i, l in enumerate(self.sequence):
if i == layer_index:
new_sequence.append(new_neuron) # 새로운 뉴런으로 교체
else:
new_sequence.append(layer)
return new_sequence
def eval_sequence(x, sequence):
for layer in sequence:
x = layer(x)
return x
(글자수 : 1500자 이상)
강의 소개 링크 : bit.ly/3cx6kMd
딥러닝/인공지능 올인원 패키지 Online. | 패스트캠퍼스
Tensorflow2.0부터 Pytorch까지 딥러닝 대표 프레임워크를 정복하기. 생활 깊숙이 침투한 인공지능, 그 중심엔 딥러닝이 있습니다. 가장 강력한 머신러닝의 툴로서 주목받는 딥러닝은 생각보다 어려
fastcampus.co.kr