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