0
私の損失関数にL1正規化とL2正規化の両方を追加したいと思います。私が重み変数を定義するとき、私は使用する正則化を選択しますが、私は1つしか選択できないようです。正規化損失Tensorflow - TRAINABLE_VARIABLESをテンソル配列
regLosses=tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
loss=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(y_conv,y_))+regLosses
私はそれが動作しない
weights=tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES)
l1Loss=tf.reduce_sum(tf.abs(weights))
l2Loss=tf.nn.l2loss(weights)
loss=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(y_conv,y_))+.1*l1Loss+.001*l2Loss
して手動での損失を取得しよう - 私は思うTRAINABLE_VARIABLESは変数ではないパラメータを返すため。どのように私はこれを修正するのですか?私のマニュアルによるl1損失の計算は正しいですか?
ありがとうございます。
tf.trainable_variables()の変数ごとにforループを試してみてください。個々のL2損失を合計して損失に加えてみてください。 –