Deep Learning

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 7장 합성곱 신경망(CNN) II]

im2col 코드 출처: https://github.com/youbeebee/deeplearning_from_scratch/blob/master/common/util.py import numpy as np def smooth_curve(x): """손실 함수의 그래프를 매끄럽게 하기 위해 사용 참고:http://glowingpython.blogspot.jp/2012/02/convolution-with-numpy.html """ window_len = 11 s = np.r_[x[window_len-1:0:-1], x, x[-1:-window_len:-1]] w = np.kaiser(window_len, 2) y = np.convolve(w/w.sum(), s, mode='valid') return y[5:..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 7장 합성곱 신경망(CNN) I]

Affine 계층은 fully-connected layer 라고도 한다. Affine 계층의 네트워크는 다음과 같다. 마지막 5번째 층은 softmax 계층에서 최종결과를 출력한다. CNN(합성곱 계층, convolutional layer)는 합성곱계층(convolutional layer)와 풀링계층이 추가되었다 affine(a.k.a fc layer)의 문제점 -> 공간, 색깔 (R G B), 거리 등 3차원속의 의미를 갖는 본질이 무시됨, 같은 차원의 뉴런으로 취급됨 CNN의 특징 -> 3차원적인 형상 유지(이미지 데이터의 특성) 합성곱 연산 입력은 (4*4), 필터는 (3*3) 출력은 (2*2) 이다. 필터를 kernel 이라고 지칭하기도함 1*2+0*2+3*1+0*0+1*1+2*2+3*1+0*0+..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 6장 학습 관련 기술들 II]

가중치 초깃값 설정 가중치 초깃값을 0으로 설정하면 갱신을 해도 여전히 같은 값이 유지가된다 그러므로 초깃값을 무작위로 설정해야한다 은닉층의 활성화값 분포 import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1/(1+np.exp(-x)) x = np.random.randn(1000,100) #1000개의 데이터 node_num = 100 #각 은닉층의 노드 수 hidden_layer_size = 5 #총 5개의 은닉층 activations = {} #활성화 결과(활성화 값)을 저장 for i in range(hidden_layer_size): if i != 0: x = activations[i-1] #표준편차가 1일때 w =..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 6장 학습 관련 기술들 I]

최적화(optimization) 이란 loss function의 값을 낮추는 매개변수의 최적값을 찾는 과정이다 확률적 경사 하강법(SGD)-> 매개변수의 기울기를 구하여 기울어진 방향으로 매개변수값 갱신 W: 갱신할 가중치 매개변수 ∂L/ ∂W: W에 대한 손실 함수의 기울기 η: learning rate(0.01또는 0.001) class SGD: def __init__(self, lr=0.01): self.lr = lr def update(self, params, grads):#딕셔너리 형태의 변수 for key in params.keys(): params[key] -= self.lr * grads[key] update 메서드 SGD과정에서 반복함. params['W1'], grads['W1'] 와 ..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 5장 오차역전파법 II]

Affine/Softmax 계층 구현 Affine 계층 어파인계층은 행렬의 곱을 사용하여 계산한다. X는 ∂L/ ∂X과 같은 형상이고, W는 ∂L/ ∂W와 같은 형상이다. 행렬의 곱의 역전파는 대응하는 차원의 원소수가 일치하도록 곱을 조립한다. 배치용 Affine 계층 데이터N개를 묶어 순전파 하는 경우에는, 배치용 affine 계층을 생각해볼 수 있다. 순전파 때의 편향 덧셈은 X*W 에 대한 편향이 각 데이터에 전해진다. 예를들어 N=2 일 경우, 편향이 두개의 데이터 각각에 더해진다. X_dot_W = np.array([[0,0,0], [10,10,10]]) B = np.array([1,2,3]) X_dot_W array([[ 0, 0, 0], [10, 10, 10]]) X_dot_W + B arr..

Deep Learning/from scratch I

[밑바닥부터 시작하는 딥러닝 - 5장 오차역전파법 I]

연쇄법칙 순전파는 왼쪽 -> 오른쪽으로 전달 역전파는 국소적인 미분을 반대로 오른쪽에서 왼쪽으로 전달함 계산 그래프의 역전파 신호 E에 노드의 국소적 미분(∂y/ ∂x)을 곱한 후 다음 노드로 전달 만약 y = f(x) = x^2 이라면 ∂y/ ∂x = 2x 값을 E에 곱하여서 앞 노드로 전달한다. 덧셈노드 역전파는 입력신호는 다음 노드로 그대로 전달함 곱셈노드 역전파는 입력신호들을 서로 바꾼값을 곱해서 보낸다 더하기는 1.1를 그대로 보내주고 곱하기의 역전파는 1.1*150(반대편 순전파의 값) =165를 반대편 역전파에 대입해준다. 곱셈계층에 대한 코드 class MulLayer: def __init__(self): #x,y를 초기화 , 순전파 시의 입력값 유지 self.x = None self.y ..

Deep Learning/from scratch I

밑바닥부터 시작하는 딥러닝 - 4장 신경망 학습 II]

학습 알고리즘 구현하기 신경망학습의 절차 1단계- 미니배치 : 훈련 데이터를 무작위로 가져옴 2단계 - 기울기 산출 : loss funciton을 줄이기 위해 가중치 매개변수의 기울기를 구하고, 기울기는 손실함수 값을 가장 작게하는 방향으로 한다. 3단계 - 매개변수 갱신 : 가중치 매개변수를 기울기 방향으로 갱신 1-3 단계 반복 확률적 경사하강법(SGD)-> 확률적으로 무작위로 골라낸 데이터에 대해 신경망 학습 수행 import sys,os sys.path.append(os.pardir) import numpy as np from common.functions import * from common.gradient import numerical_gradient class TwoLayerNet: def ..

Deep Learning/from scratch I

밑바닥부터 시작하는 딥러닝 - 4장 신경망 학습 I]

손실함수(loss function) 1. 오차제곱합 yk -> 신경망의 출력값 tk -> 정답 레이블 k -> 데이터의 차원수 출력값에서 정답레이블의 차를 구한 후, 이의 제곱합을 구한 후 2로 나눠준다. def sum_squares_error(y,t): return 0.5 * np.sum((y-t)**2) import numpy as np t = [0,0,1,0,0,0,0,0,0,0] # 원핫인코딩으로 나타낸 정답 레이블 #1 y = [0.1,0.05,0.6,0.0,0.05,0.1,0.0,0.1,0.0,0.0] # 출력값 print(sum_squares_error(np.array(y),np.array(t))) #2 y = [0.1,0.05,0.1,0.0,0.05,0.1,0.0,0.6,0.0,0.0] #..

해파리냉채무침
'Deep Learning' 카테고리의 글 목록 (3 Page)