Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 플로이드와샬
- Docker
- C++
- Stack
- 캡스톤정리
- Algorithm
- 백트래킹
- 부르트포스
- 풀이
- mysql
- 실버쥐
- dfs
- NeuralNetwork
- DeepLearning
- 프로그래머스
- Blockchain
- Node.js
- Greedy
- 그래프
- ReLU
- Swift
- BFS
- 그리디
- dp
- 백준
- ios
- 알고리즘
- sigmoid
- 탐색
- 문제풀이
Archives
- Today
- Total
개발아 담하자
[Deep Learning] Neural Network 의 Forward Pass 구현해보기 (1) - 초기 네트워크 세팅 본문
🚀 Deep Learning
[Deep Learning] Neural Network 의 Forward Pass 구현해보기 (1) - 초기 네트워크 세팅
choidam 2020. 4. 22. 02:171. 단순 신경망 구조 만들기 (네트워크 세팅)
def init_network():
network = {}
network['W'] = np.array([
[0.2, 0.5, 0.3],
[0.8, 0.6, 0.4]
])
return network
network = init_network()
print(network)
{'W': array([[0.2, 0.5, 0.3],
[0.8, 0.6, 0.4]])}
init_network() 함수로 초기 네트워크 세팅을 해주었다.
2. ForwardPass 만들기
# forward pass 1
def forward1(network, x):
W = network['W']
y = np.array([0.0, 0.0, 0.0])
y[0] = W[0][0] * x[0] + W[1][0] * x[1]
y[1] = W[0][1] * x[0] + W[1][1] * x[1]
y[2] = W[0][2] * x[0] + W[1][2] * x[1]
return y
# forward pass 2
def forward2(network,x):
y = np.dot(x, network['W'])
return y
# sigmoid : 출력값을 0~1로 조정
def sigmoid(x):
return 1 / ( 1 + np.exp(-x) )
# forward + sigmoid (Active Function 적용)
def forward3(network,x):
y = sigmoid(np.dot(x, network['W']))
return y
print(forward2(network, np.array([1.0, 2.0])))
print(forward3(network, np.array([1.0, 2.0])))
[1.8 1.7 1.1]
[0.85814894 0.84553473 0.75026011]
forward2는 numpy 를 사용해 forward1 계산을 한 번에 한 형태이다. (행렬의 곱셈)
forward3은 sigmoid 함수를 적용해 forward 값을 0~1사이로 적용한 형태이다. 출력값으로 확인할 수 있다.
3. Softmax Function
def softmax(x) :
e = np.exp(x - np.max(x))
s = np.sum(e)
return e / s
일반적으로 Neural Network 기반 multi-label classifier 의 마지막 층에서 사용한다.
출력값이 0부터 1사이의 값이다. 출력의 합계는 1이다.
이제 이 함수들을 활용해 이미지를 학습시키고 분류를 시작할 준비가 되었다 ❗️
+ 추가
Loss Function
지금 예측이 얼마나 좋은지 알 수 있는 함수. 0에 가까울 수록 학습이 잘 된 모델이다.
1. MSE (Mean Squared Error)
선형 회귀는 적절한 가중치 (w) 와 편향(b) 를 찾기 위해 평균 제곱 오차(MSE) 를 최소화하는 파라미터 w 와 b 를 찾는다.
실제 라벨값과 예측값의 차이가 작으면 작을 수록 예측 성능이 좋기 때문이다.
def mean_squared_error(y,t):
return np.mean((y-t)**2)
2. CSE (Cross Entropy Error)
def cross_entropy_error(y,t):
return -np.sum(t * np.log(y + 1e-9)) / y.shape[0]
softmax 를 사용했을 때 (분류 했을 때) 주로 사용한다.
'🚀 Deep Learning' 카테고리의 다른 글
[Deep Learning] Gradient Descent 란 ? (0) | 2020.04.24 |
---|---|
[Deep Learning] Neural Network 의 Forward Pass 구현해보기 (2) - MNIST 데이터 학습, 예측, 정답률 구하기 (0) | 2020.04.22 |
[Deep Learning] Perceptron 과 NeuralNetwork 란? (0) | 2020.04.22 |
[Deep Learning] Scipy Library 사용하기, 이미지 처리해보기 (0) | 2020.04.15 |
[Deep Learning] pip 으로 MacOS에서 TensorFlow 설치하기 / 실행해보기 (0) | 2020.03.18 |