활성화 함수는 Activation
층layer이나 포워드 패스를 사용하는 모든 층에서 activation
인자로 사용 가능합니다.
from keras.layers import Activation, Dense
model.add(Dense(64))
model.add(Activation('tanh'))
위의 코드는 아래와 동일합니다.
model.add(Dense(64, activation='tanh'))
TensorFlow, Theano, CNTK에서 제공하는 원소별element-wise 연산도 활성화 함수로 사용할 수 있습니다.
from keras import backend as K
model.add(Dense(64, activation=K.tanh))
keras.activations.softmax(x, axis=-1)
Softmax 활성화 함수.
인자
- x: 입력 텐서.
- axis:
int
. Softmax 정규화normalization가 적용되는 축axis.
반환값
Softmax 변환으로 생성된 텐서.
f(x) = exp(x) / sum(exp(x))
오류
- ValueError:
dim(x) == 1
인 경우 발생합니다.
keras.activations.elu(x, alpha=1.0)
Exponential Linear Unit(ELU).
인자
- x: 입력 텐서.
- alpha:
float
.x < 0
인 경우의 기울기. 기본값은1.0
.
반환값
ELU의 활성값.
x > 0
인 경우,f(x) = x
x < 0
인 경우,f(x) = alpha * (exp(x) - 1)
참고
keras.activations.selu(x)
Scaled Exponential Linear Unit(SELU).
SELU는 scale * elu(x, alpha)
와 같습니다. alpha
와 scale
은
미리 정해지는 상수입니다. 가중치weights가 올바르게 초기화되고(lecun_normal
참조)
입력 수가 '충분히 많다'면 alpha
와 scale
의 값은
입력의 평균과 분산이 연속되는 두 개의 층에서 보존되도록 결정됩니다(참고자료 참조).
인자
- x: 입력 텐서.
반환값
SELU의 활성값
f(x) = scale * elu(x, alpha)
유의 사항
lecun_normal
과 함께 사용되어야 합니다.AlphaDropout
과 함께 사용되어야 합니다.
참고
keras.activations.softplus(x)
Softplus 활성화 함수.
인자
- x: 입력 텐서.
반환값
Softplus의 활성값.
f(x) = log(exp(x) + 1)
keras.activations.softsign(x)
Softsign 활성화 함수.
인자
- x: 입력 텐서.
반환값
Softsign의 활성값.
f(x) = x / (abs(x) + 1)
keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0.0)
Rectified Linear Unit(ReLU).
인자의 기본값을 사용하면 원소별로 연산된 max(x, 0)
를 반환합니다.
다른 인자를 사용하면 ReLU는 다음과 같습니다.
x >= max_value
인 경우,f(x) = max_value
threshold <= x < max_value
인 경우,f(x) = x
- 나머지 경우,
f(x) = alpha * (x - threshold)
인자
- x: 입력 텐서.
- alpha:
float
.x < 0
인 경우의 기울기. 기본값은0.0
. - max_value:
float
. 포화 임계값. - threshold:
float
. 활성화가 일어나는 임계값.
반환값
ReLU 변환으로 생성된 텐서.
x >= max_value
인 경우,f(x) = max_value
threshold <= x < max_value
인 경우,f(x) = x
- 나머지 경우,
f(x) = alpha * (x - threshold)
keras.activations.tanh(x)
Hyperbolic Tangent 활성화 함수.
인자
- x: 입력 텐서.
반환값
Hyperbolic Tangent의 활성값.
f(x) = tanh(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))
keras.activations.sigmoid(x)
Sigmoid 활성화 함수.
인자
- x: 입력 텐서.
반환값
Sigmoid의 활성값.
f(x) = 1 / (1 + exp(-x))
keras.activations.hard_sigmoid(x)
Hard sigmoid 활성화 함수.
Sigmoid 활성화 함수보다 연산 속도가 빠릅니다.
인자
- x: 입력 텐서.
반환값
Hard sigmoid의 활성값.
x < -2.5
인 경우,f(x) = 0
x > 2.5
인 경우,f(x) = 1
-2.5 <= x <= 2.5
인 경우,f(x) = 0.2 * x + 0.5
keras.activations.exponential(x)
(밑이 e인) 지수 활성화 함수.
인자
- x: 입력 텐서.
반환값
Exponential의 활성값.
f(x) = exp(x)
keras.activations.linear(x)
선형(즉, 항등) 활성화 함수.
인자
- x: 입력 텐서.
반환값
변하지 않은 입력 텐서.
간단한 TensorFlow, Theano, CNTK의 활성화 함수보다 더 복잡한 함수들(예: 학습 가능한 파라미터를 가진 활성화 함수)은 고급 활성화 함수의 사용법에서 확인할 수 있으며, keras.layers.advanced_activations
모듈에서 찾을 수 있습니다. PReLU
와 LeakyReLU
도 여기서 찾을 수 있습니다.