日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

解讀keras中的正則化(regularization)問題_python

作者:Cold__Heart ? 更新時間: 2023-01-15 編程語言

keras中正則化(regularization)

keras內置3種正則化方法

keras.regularizers.l1(lambda)
keras.regularizers.l2(lambda)
keras.regularizers.l1_l2(l1=lambda1, l2=lambda2)

目前我的理解是lambda越大,對參數的約束就越強,也就是懲罰力度越大。

其中L1正則化方法,是對|w|進行懲罰,使得w趨近0

而L2正則化方法,是對w2進行懲罰,使得w盡可能小

Dense,Conv1D,Conv2D,Conv3D有統一的正則化API,見keras中文文檔。

3個正則化關鍵字

1. kernel_regularizer

對權值進行正則化,大多數情況下使用這個

2. bias_regularizer

限制bias的大小,使得輸入和輸出接近

3. activity_regularizer

對輸出進行正則化,使得輸出盡量小

keras中添加正則化

正則項

正則項在優化過程中層的參數或層的激活值添加懲罰項,這些懲罰項將與損失函數一起作為網絡的最終優化目標

懲罰項基于層進行懲罰,目前懲罰項的接口與層有關,但Dense, Conv1D, Conv2D, Conv3D具有共同的接口。

這些層有三個關鍵字參數以施加正則項:

  • kernel_regularizer:施加在權重上的正則項,為keras.regularizer.Regularizer對象
  • bias_regularizer:施加在偏置向量上的正則項,為keras.regularizer.Regularizer對象
  • activity_regularizer:施加在輸出上的正則項,為keras.regularizer.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.regularizers.l1(0.)
keras.regularizers.l2(0.)
keras.regularizers.l1_l2(0.)

開發新的正則項

任何以權重矩陣作為輸入并返回單個數值的函數均可以作為正則項,示例:

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/regularizer.py

總結

原文鏈接:https://blog.csdn.net/Cold__Heart/article/details/102238029

欄目分類
最近更新