激活函數也是神經網絡中一個很重的部分。每一層的網絡輸出都要經過激活函數。比較常用的有linear,sigmoid,tanh,softmax等。Keras內置提供了很全的激活函數,包括像LeakyReLU和PReLU這種比較新的激活函數。
一、激活函數的使用
常用的方法在Activation層中可以找到。看代碼。
from keras.layers.core import Activation, Dense
model.add(Dense(64))
model.add(Activation('tanh'))
等價於:
model.add(Dense(64, activation='tanh')) #此處’tanh’是一個字符串
我們也可以將一個Theano function作為激活函數傳遞給activation,如下:
deftanh(x):
return theano.tensor.tanh(x)
model.add(Dense(64, activation=tanh)) #此處tanh是函數
model.add(Activation(tanh))
二、常用的激活函數
- softmax: 在多分類中常用的激活函數,是基於邏輯回歸的。
- Softplus:softplus(x)=log(1+e^x),近似生物神經激活函數,最近出現的。
- Relu:近似生物神經激活函數,最近出現的。
- tanh:雙曲正切激活函數,也是很常用的。
- sigmoid:S型曲線激活函數,最常用的。
- hard_sigmoid:基於S型激活函數。
- linear:線性激活函數,最簡單的。
三、復雜的激活函數
更復雜的激活函數,可以在keras.layers.advanced_activations中找到。就是開始提到的PReLU和LeakyReLU。這兩個函數都是在ReLU的基礎之上進行改進的。從相關實驗來看,這些函數具有更好的准確度,但是訓練時間需要更長,因為計算更復雜。
Keras框架官方文檔:https://keras.io/activations/
順便再分享下自己的網站:圓柱模板,歡迎廣大愛好者一起訪問探討!
