1 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
根據(jù)文檔,事實(shí)證明,lambda 函數(shù)不應(yīng)該帶有任何參數(shù)。然而,當(dāng)我沒有傳遞參數(shù)時(shí),它導(dǎo)致了另一個(gè)非常奇怪的錯(cuò)誤(這是關(guān)于Dense
沒有 的層depthwise_kernel
,這是顯而易見的,不應(yīng)該發(fā)生,但不知何故它發(fā)生了)。
因此,我的最終解決方案是定義兩個(gè)單獨(dú)的正則化函數(shù),如上面鏈接中的建議。
def add_l2_regularization_kernel(layer, weight):
? ? def _add_l2_regularization_kernel():
? ? ? ? l2 = tf.keras.regularizers.l2(weight)
? ? ? ? return l2(layer.kernel)
? ? return _add_l2_regularization_kernel
def add_l2_regularization_depthwise_kernel(layer, weight):
? ? def _add_l2_regularization_depthwise_kernel():
? ? ? ? l2 = tf.keras.regularizers.l2(weight)
? ? ? ? return l2(layer.depthwise_kernel)
? ? return _add_l2_regularization_depthwise_kernel
if config.has("regularizer"):
? ? if config.regularizer.name == "l2":
? ? ? ? l2_reg = config.regularizer.weight
? ? ? ? for layer in model.layers:
? ? ? ? ? ? if isinstance(layer, tf.keras.layers.DepthwiseConv2D):
? ? ? ? ? ? ? ? layer.add_loss(add_l2_regularization_depthwise_kernel(layer, l2_reg))
? ? ? ? ? ? elif isinstance(layer, tf.keras.layers.Conv2D) or isinstance(layer, tf.keras.layers.Dense):
? ? ? ? ? ? ? ? layer.add_loss(add_l2_regularization_kernel(layer, l2_reg))
添加回答
舉報(bào)