티스토리 뷰
밑바닥부터 시작하는 딥러닝 : 파이썬으로 익히는 딥러닝 이론과 구현
실습 환경 : google colab
3장 - 신경망
활성화 함수(activation function) : 입력신호(input)의 총합을 출력신호(output)로 변환하는 함수
계단 함수
- 개념
# 계단 함수
# 입력(input) 이 0을 넘으면 1을 출력하고 그외에는 0을 출력한다.
def step_function(x) : # x는 실수(부동소수점) 만 받아들인다. 넘파이 배열을 인수로 넣을 수는 없다.
if x > 0 :
return 1
else :
return 0
- 넘파이 배열도 입력 받으려면
def step_function(x) :
y = x > 0 # bool (True/False 형태로 저장된다.)
return y.astype(np.int) # bool을 int로 변환해준다.
계단 함수를 구현해보자
import numpy as np
import matplotlib.pylab as plt
x = np.arange(-5.0, 5.0, 0.1) # -5.0 부터 5.0 까지 0.1 단위의 범위.
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()
np.arange (numpy.arange) 참조
https://numpy.org/doc/stable/reference/generated/numpy.arange.html
numpy.arange — NumPy v1.26 Manual
arange(start, stop, step) Values are generated within the half-open interval [start, stop), with spacing between values given by step.
numpy.org
결과
시그모이드 함수(sigmoid) :
def sigmoid(x) :
return 1 / (1 + np.exp(-x))
np.exp (numpy.exp) 참조
https://numpy.org/doc/stable/reference/generated/numpy.exp.html
numpy.exp — NumPy v1.26 Manual
numpy.org
np.exp 이해해 보기 :
자연상수 'e'에 대한 지수함수
n의 거듭제곱으로 된 a(a^n으로 표시됨)는 a를 n번 곱하는 것을 의미한다.
(ex : 2의 3제곱은 8이다. 라고 했을때 2는 밑수 (a) 이고 3은 지수(n) 이다.
np.exp()는 여기서 밑수인 a가 자연 상수 'e'(약 2.71828)이고, 이에 대해 입력값 n제곱을 한 것을 의미한다.
시그모이드 함수 출력확인
-1.0 이 시그모이드를 통해서 0.26894.... 가 나온것을 풀어보면
step 1. 자연상수(2.71828)에 -(-1.0)을 제곱
step 2. 1을 더해주고
3. 1을 step 2의 결과로 나눈다.
시그모이드 함수를 구현해보자
x = np.arange(-5.0, 5.0, 0.1) # -5.0 부터 5.0 까지 0.1 단위의 범위.
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()
신경망에서는 활성화함수로 비선형 함수를 사용해야한다.
시그모이드 , 계단 함수 모두 비선형임.
선형함수는 은닉층이 없는 네트워크로만 구현이 됨.
ReLU 함수
입력이 0을 넘으면 그 입력을 그래도 출력하고 0이히아면 0을 출력한다.
(시그모이드와 계단은 입력이 0을 넘으면 1을 출력하지만 ReLU는 입력이 0을 넘으면 입력을 그대로 출력한다는게 차이점)
def relu(x) :
return np.maximum(0, x)
np.maximum :
두개의 입력값중에 큰 값을 반환한다.
입력된 값(x)이 0보다 크면 입력된 값이 그대로 반환될것이고 0보다 작으면 0이 반환된다.
np.maximum (numpy maximum)
https://numpy.org/doc/stable/reference/generated/numpy.maximum.html
numpy.maximum — NumPy v1.26 Manual
This condition is broadcast over the input. At locations where the condition is True, the out array will be set to the ufunc result. Elsewhere, the out array will retain its original value. Note that if an uninitialized out array is created via the default
numpy.org
ReLU함수를 구현해보자
x = np.arange(-5.0, 5.0, 0.1) # -5.0 부터 5.0 까지 0.1 단위의 범위.
y = relu(x)
plt.plot(x, y)
plt.ylim(-0.1, 6.0) # 출력이 5까지 나올테니 y축을 6까지 설정
plt.show()
'Programming' 카테고리의 다른 글
신경망의 학습 - 손실함수 (0) | 2024.01.01 |
---|---|
신경망 - 손글씨 숫자 인식 (mnist) (0) | 2023.12.31 |
- Total
- Today
- Yesterday
- 포러너 245 뮤직
- 방울토마토 재배
- 리액트 인피니티 런
- 비트
- 다이소 방울토마토
- 포러너245
- garmin
- 젤카야노 25
- 진미영
- 베란다에서 식물 키우기
- 방울토마토
- 가민
- 베란다에서 식물키우기
- 가민 포러너
- 바질 키우기
- 나이키 리액트 인피니티 런 플라이니트
- 방울토마토 키우기
- 비트 키우기
- forerunner265
- 치커리
- 나이키
- 베란다에서 비트 키우기
- 적상추
- 포러너 245
- forerunner 245 music
- 바질 재배
- 밑바닥부터 시작하는 딥러닝
- 다이소 바질
- 다이소 씨앗
- 바질
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |