激活函數的用法
激活函數可以通過設置單獨的 Activation
層實現,也可以在構造層對象時通過傳遞 activation
參數實現:
from keras.layers import Activation, Dense
model.add(Dense(64))
model.add(Activation('tanh'))
等價於:
model.add(Dense(64, activation='tanh'))
你也可以通過傳遞一個逐元素運算的 Theano/TensorFlow/CNTK 函數來作為激活函數:
from keras import backend as K
model.add(Dense(64, activation=K.tanh))
model.add(Activation(K.tanh))
預定義激活函數
elu
keras.activations.elu(x, alpha=1.0)
指數線性單元。
參數
- x:輸入張量。
- alpha:一個標量,表示負數部分的斜率。
返回
線性指數激活:如果 x > 0
,返回值為 x
;如果 x < 0
返回值為 alpha * (exp(x)-1)
參考文獻
softmax
keras.activations.softmax(x, axis=-1)
Softmax 激活函數。
參數
- x:輸入張量。
- axis:整數,代表 softmax 所作用的維度。
返回
softmax 變換后的張量。
異常
- ValueError:如果
dim(x) == 1
。
selu
keras.activations.selu(x)
可伸縮的指數線性單元(SELU)。
SELU 等同於:scale * elu(x, alpha)
,其中 alpha 和 scale 是預定義的常量。只要正確初始化權重(參見 lecun_normal
初始化方法)並且輸入的數量「足夠大」(參見參考文獻獲得更多信息),選擇合適的 alpha 和 scale 的值,就可以在兩個連續層之間保留輸入的均值和方差。
參數
- x: 一個用來用於計算激活函數的張量或變量。
返回
可伸縮的指數線性激活:scale * elu(x, alpha)
。
注意
- 與「lecun_normal」初始化方法一起使用。
- 與 dropout 的變種「AlphaDropout」一起使用。
參考文獻
softplus
keras.activations.softplus(x)
Softplus 激活函數。
參數
- x: 輸入張量。
返回
Softplus 激活:log(exp(x) + 1)
。
softsign
keras.activations.softsign(x)
Softsign 激活函數。
參數
- x: 輸入張量。
返回
Softsign 激活:x / (abs(x) + 1)
。
relu
keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0.0)
整流線性單元。
使用默認值時,它返回逐元素的 max(x, 0)
。
否則,它遵循:
- 如果
x >= max_value
:f(x) = max_value
, - 如果
threshold <= x < max_value
:f(x) = x
, - 否則:
f(x) = alpha * (x - threshold)
。
參數
- x: 輸入張量。
- alpha:負數部分的斜率。默認為 0。
- max_value:輸出的最大值。
- threshold: 浮點數。Thresholded activation 的閾值值。
返回
一個張量。
tanh
keras.activations.tanh(x)
雙曲正切激活函數。
參數
- x: 輸入張量。
返回
雙曲正切激活函數:
tanh(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))
sigmoid
sigmoid(x)
Sigmoid 激活函數。
參數
- x: 輸入張量.
返回
Sigmoid激活函數: 1 / (1 + exp(-x))
.
hard_sigmoid
hard_sigmoid(x)
Hard sigmoid 激活函數。
計算速度比 sigmoid 激活函數更快。
參數
- x: 輸入張量。
返回
Hard sigmoid 激活函數:
- 如果
x < -2.5
,返回0
。 - 如果
x > 2.5
,返回1
。 - 如果
-2.5 <= x <= 2.5
,返回0.2 * x + 0.5
。
exponential
keras.activations.exponential(x)
自然數指數激活函數。
linear
keras.activations.linear(x)
線性激活函數(即不做任何改變)
參數
- x: 輸入張量。
返回
輸入張量,不變。
高級激活函數
對於 Theano/TensorFlow/CNTK 不能表達的復雜激活函數,如含有可學習參數的激活函數,可通過高級激活函數實現,可以在 keras.layers.advanced_activations
模塊中找到。 這些高級激活函數包括 PReLU
和 LeakyReLU
。