일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- flag
- sgd
- 백준
- 기울기
- 파이썬
- Python Challenge
- 역전파
- C언어
- 딥러닝
- 코딩
- picoCTF
- PostgreSQL
- FastAPI
- 아파치
- PHP
- 신경망
- 책
- Python
- 우분투
- AdaGrad
- 소프트맥스 함수
- CTF
- Apache2
- 신경망 학습
- HTML
- 설치
- 리뷰
- 순전파
- PICO CTF
- 오차역전파법
- Today
- Total
Story of CowHacker
딥러닝 4.2 오차역전파법 본문
이번 글에서는 활성화 함수 계층에서 ReLU와 Sigmoid 계층을 구현해볼 것이다.
1. ReLU 계층
그림 1은 ReLU계층을 수식으로 나타낸 것이다.
그림 2는 x에 대한 y의 미분을 한 것이다.
순 전파 때의 입력인 x가 0보다 크면 역전파는 상류의 값을 그대로 하류로 흘린다.
반면, 순전파 때 x 가 0 이하면 역전파 때는 하류로 신호를 보내지 않는 걸 볼 수 있다.
위 그림 1 ,2를 계산 그래프로도 나타 내보겠다.
이것을 이제 파이썬으로 구현해보겠다.
파이썬 코드는
출처 : https://github.com/WegraLee/deep-learning-from-scratch
WegraLee/deep-learning-from-scratch
『밑바닥부터 시작하는 딥러닝』(한빛미디어, 2017). Contribute to WegraLee/deep-learning-from-scratch development by creating an account on GitHub.
github.com
출처에서 다운로드한 파일의
common /layers.py에 있다.
ReLU코드
import numpy as np
from common.functions import *
from common.util import im2col, col2im
class Relu:
def __init__(self):
self.mask = None
def forward(self, x):
self.mask = (x <= 0)
out = x.copy()
out[self.mask] = 0
return out
def backward(self, dout):
dout[self.mask] = 0
dx = dout
return dx
Relu 클래스는 mask라는 인스턴스 변수를 가진다.
mask는 True / False로 구성된 넘 파이 배열로, 순 전파의 입력인 x의 원소 0 이하인 인덱스는 True, 그 외는 False로 유지한다.
다음은 Simoid 계층을 알아보겠다.
Sigmoid 함수를 수식으로 나타내면 그림 4와 같다.
Sigmoid 계층을 계산 그래프로 나타내 보겠다.
다음은 Sigmoid 계층을 파이썬으로 구현해보겠다.
Sigmoid계층 코드
class Sigmoid:
def __init__(self):
self.out = None
def forward(self, x):
out = sigmoid(x)
self.out = out
return out
def backward(self, dout):
dx = dout * (1.0 - self.out) * self.out
return dx
이까지 ReLU와 Sigmoid 계층에 대해 알아보았다.
'공부 > 딥러닝' 카테고리의 다른 글
딥러닝 4.4 오차역전파법 (0) | 2020.08.19 |
---|---|
딥러닝 4.3 오차역전파법 (0) | 2020.08.18 |
딥러닝 4.1 오차역전파법 (0) | 2020.08.17 |
딥러닝 4.0 오차역전파법 (0) | 2020.08.16 |
딥러닝 3.5 신경망 학습 (0) | 2020.08.14 |