使用tf.layers中定義的圖層時,是否可以添加L2正則化?使用高級別tf.layers時添加L2正則化
在我看來,由於tf.layers是一個高層包裝,沒有簡單的方法可以訪問過濾器權重。
隨着tf.nn.conv2d
regularizer = tf.contrib.layers.l2_regularizer(scale=0.1)
weights = tf.get_variable(
name="weights",
regularizer=regularizer
)
#Previous layers
...
#Second layer
layer 2 = tf.nn.conv2d(
input,
weights,
[1,1,1,1],
[1,1,1,1])
#More layers
...
#Loss
loss = #some loss
reg_variables = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
reg_term = tf.contrib.layers.apply_regularization(regularizer, reg_variables)
loss += reg_term
現在會是什麼樣子與tf.layers.conv2d?
謝謝!
我需要將正規化劑添加到最後的損失層嗎?像'loss_new = loss_old + regularizer' – Tom
@TYL是否將它添加到最後一個丟失層? – thigi
你能否擴大你的答案? – thigi