1

数字分類のためにCNNモデルを実装しました。私のモデルはあまりにも多くの問題を抱えています。オーバーフィットを克服するために、私はコスト関数にL2 Regularizationを使用しようとしています。私は小さな混乱を持っています <weights>を選択してコスト方程式(コードの最終行)を入れる方法を教えてください。畳み込みニューラルネットワークのL2正規化コスト関数の実装方法

... 

x = tf.placeholder(tf.float32, shape=[None, img_size, img_size, num_channels], name='x') # Input 
y_true = tf.placeholder(tf.float32, shape=[None, num_classes], name='y_true') # Labels 

<Convolution Layer 1> 

<Convolution Layer 2> 

<Convolution Layer 3> 

<Fully Coonected 1> 

<Fully Coonected 2> O/P = layer_fc2 

# Loss Function 
lambda = 0.01 
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=layer_fc2, labels=y_true) 
# cost  = tf.reduce_mean(cross_entropy) # Nornmal Loss 
cost   = tf.reduce_mean(cross_entropy + lambda * tf.nn.l2_loss(<weights>)) # Regularized Loss 

... 

答えて

2

あなたは重みに対するL2の損失を定義する必要があります - そのためtrainable_variablesを使用します。

C = tf.nn.softmax_cross_entropy_with_logits(logits=layer_fc2, labels=y_true) 
l2_loss = tf.add_n([tf.nn.l2_loss(v) for v in tf.trainable_variables()]) 
C = C + lambda * l2_loss 
関連する問題