반응형
/**
날짜 : 2017.01.25
밑바닥부터 시작하는 딥러닝(한빛미디어) 참고
activation function 정리
*/
1. Step Function
import numpy as np import matplotlib.pyplot as plt %matplotlib inline """ 일반적인 step_function """ def step_function(x) : if x > 0 : return 1 else : return 0 """ numpy의 트릭을 사용한 step function 구현 """ def step_function_np(x) : y = x > 0 # boolean을 int로 변환하면 True = 1, False = 0이 된다. # numpy 배열의 type을 변경할 때 .astype을 쓴다. return y.astype(np.int)
첫 번째 step_function의 경우 numpy array를 입력으로 받아들일 수 없다. 반면 step_function_np 함수는 numpy array를 입력으로 받아들일 수 있다. 아래의 경우 y = x > 0 에서 boolean 형식의 numpy array가 반환되는 점을 트릭으로 활용하여 이를 step_function 구현해 활용한 것이다.
실제로 파이썬에서 deep learning 알고리즘을 구현할 때는 일반적으로 numpy array를 입력으로 받아 numpy array를 출력으로 내보내는 함수를 작성하는 것이 편하므로 step_function_np와 같이 구현하는 것이 더 바람직하다.
x = np.arange(-5.0, 5.0, 0.1) # -5.0부터 5.0까지 0.1 간격의 numpy array 생성 y = step_function_np(x) plt.plot(x,y) plt.ylim(-0.1,1.1) plt.show()
2. Sigmoid function
def sigmoid(x) : return 1 / (1+np.exp(-x)) x = np.array([-1.0, 1.0, 2.0]) # numpy broadcast 기능으로 인해 정상수행 sigmoid(x)
- numpy broadcast 기능으로 인해 numpy array에 어떠한 연산을 하면 각각의 element에 연산이 적용된 numpy array가 반환된다.
x = np.arange(-5.0,5.0,0.1) plt.plot(x, sigmoid(x)) plt.ylim(-0.1,1.1) plt.show()
- np.arange는 -5.0 부터 5.0까지 0.1 간격으로 numpy array를 생성해준다.
3. ReLU
def relu(x) : return np.maximum(0, x)
x = np.arange(-5.0,5.0,0.1) plt.plot(x, relu(x)) plt.show()
반응형
'Data science > Machine Learning' 카테고리의 다른 글
Spatial Transformation Network 란 무엇인가? (0) | 2017.10.26 |
---|---|
딥러닝 - Universal Approximation Theorem 실험 (2) | 2017.07.02 |
Deep Learning - Word Embedding 이란 무엇인가? (2) | 2017.06.25 |
Deep Learning - Softmax 구현 및 성질 (0) | 2017.01.30 |
Deep Learning - Numpy 기초, 신경망 구현 (0) | 2017.01.30 |