如果我添加,例如添加kernel_regularizer=tf.keras.regularizers.L1(0.01)到一個層,我在編譯時是否需要在我的損失描述中添加一些東西,或者它會自動添加到我的正常損失中嗎?
uj5u.com熱心網友回復:
使用tf.keras.regularizers.L1(0.01)將自動為您的損失函式添加懲罰。你可以使用這個簡單的例子觀察損失函式在有和沒有懲罰的情況下的變化:
import tensorflow as tf
tf.random.set_seed(1)
x_input = tf.keras.layers.Input((1,))
x = tf.keras.layers.Dense(3, kernel_regularizer=tf.keras.regularizers.L1(0.01))(x_input)
x_output = tf.keras.layers.Dense(1, activation='sigmoid')(x)
model = tf.keras.Model(x_input, x_output)
model.compile(optimizer='adam', loss=tf.keras.losses.BinaryCrossentropy())
x = tf.random.normal((1, 1))
y = tf.random.uniform((1, 1), maxval=2, dtype=tf.int32)
model.fit(x, y, epochs=1)
如果你使用自定義的訓練回圈,你必須手動添加你在某些層定義為您的損失的追加處罰,如圖所示這里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/363887.html
