1. 正則化層
正則化器允許在優化過程中對層的參數或層的激活情況進行懲罰。 網絡優化的損失函數也包括這些懲罰項。(但不包括諸如Dropout/人為加Noise這類的正則化)。懲罰是以層為對象進行的。具體的 API 因層而異,但
Dense
,Conv1D
,Conv2D
和Conv3D
這些層具有統一的 API。正則化器開放 3 個關鍵字參數:
keras.regularizers.Regularizer
的3個實例:kernel_regularizer
bias_regularizer
activity_regularizer
from keras import regularizers model.add(Dense(64, input_dim=64, kernel_regularizer=regularizers.l2(0.01), activity_regularizer=regularizers.l1(0.01)))
keras中可用的正則
keras.regularizers.l1(0.) keras.regularizers.l2(0.) keras.regularizers.l1_l2(l1=0.01, l2=0.01)
2. 自定義正則化層
任何輸入一個權重矩陣、返回一個損失貢獻張量的函數,都可以用作正則化器,例如:
from keras import backend as K def l1_reg(weight_matrix): return 0.01 * K.sum(K.abs(weight_matrix)) model.add(Dense(64, input_dim=64, kernel_regularizer=l1_reg))
另外,也可以用面向對象的方式來編寫正則化器的代碼,例子見 keras/regularizers.py 模塊。