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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語言 正文

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

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

keras中正則化(regularization)

keras內(nèi)置3種正則化方法

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

目前我的理解是lambda越大,對(duì)參數(shù)的約束就越強(qiáng),也就是懲罰力度越大。

其中L1正則化方法,是對(duì)|w|進(jìn)行懲罰,使得w趨近0

而L2正則化方法,是對(duì)w2進(jìn)行懲罰,使得w盡可能小

Dense,Conv1D,Conv2D,Conv3D有統(tǒng)一的正則化API,見keras中文文檔。

3個(gè)正則化關(guān)鍵字

1. kernel_regularizer

對(duì)權(quán)值進(jìn)行正則化,大多數(shù)情況下使用這個(gè)

2. bias_regularizer

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

3. activity_regularizer

對(duì)輸出進(jìn)行正則化,使得輸出盡量小

keras中添加正則化

正則項(xiàng)

正則項(xiàng)在優(yōu)化過程中層的參數(shù)或?qū)拥募せ钪堤砑討土P項(xiàng),這些懲罰項(xiàng)將與損失函數(shù)一起作為網(wǎng)絡(luò)的最終優(yōu)化目標(biāo)

懲罰項(xiàng)基于層進(jìn)行懲罰,目前懲罰項(xiàng)的接口與層有關(guān),但Dense, Conv1D, Conv2D, Conv3D具有共同的接口。

這些層有三個(gè)關(guān)鍵字參數(shù)以施加正則項(xiàng):

  • kernel_regularizer:施加在權(quán)重上的正則項(xiàng),為keras.regularizer.Regularizer對(duì)象
  • bias_regularizer:施加在偏置向量上的正則項(xiàng),為keras.regularizer.Regularizer對(duì)象
  • activity_regularizer:施加在輸出上的正則項(xiàng),為keras.regularizer.Regularizer對(duì)象

例子

from keras import regularizers
model.add(Dense(64, input_dim=64,
? ? ? ? ? ? ? ? kernel_regularizer=regularizers.l2(0.01),
? ? ? ? ? ? ? ? activity_regularizer=regularizers.l1(0.01)))

可用正則項(xiàng)

keras.regularizers.l1(0.)
keras.regularizers.l2(0.)
keras.regularizers.l1_l2(0.)

開發(fā)新的正則項(xiàng)

任何以權(quán)重矩陣作為輸入并返回單個(gè)數(shù)值的函數(shù)均可以作為正則項(xiàng),示例:

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

總結(jié)

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

欄目分類
最近更新