2016-09-12 28 views
2

Ich bin vertraut mit maschinellem Lernen, aber ich lerne Tensorflow auf eigene Faust durch das Lesen ein paar Folien von Universitäten. Im Folgenden richte ich die Verlustfunktion für die lineare Regression mit nur einem Merkmal ein. Ich füge einen L2-Verlust bis zum Totalverlust, aber ich bin nicht sicher, ob ich es richtig mache:Tensorflow - Hinzufügen von L2 Regularisierung Verlust einfaches Beispiel

# Regularization 
reg_strength = 0.01 

# Create the loss function. 
with tf.variable_scope("linear-regression"): 
    W = tf.get_variable("W", shape=(1, 1), initializer=tf.contrib.layers.xavier_initializer()) 
    b = tf.get_variable("b", shape=(1,), initializer=tf.constant_initializer(0.0)) 
    yhat = tf.matmul(X, W) + b 

    error_loss = tf.reduce_sum(((y - yhat)**2)/number_of_examples) 
    #reg_loss = reg_strength * tf.nn.l2_loss(W) # reg 1 
    reg_loss = reg_strength * tf.reduce_sum(W**2) # reg 2 
    loss  = error_loss + reg_loss 

# Set up the optimizer. 
opt_operation = tf.train.GradientDescentOptimizer(0.001).minimize(loss) 

Meine spezifische Fragen sind:

  1. Ich habe zwei Linien (kommentiert als reg 1 und reg 2), die den L2-Verlust des Gewichts berechnen W. Die mit reg 1 markierte Zeile verwendet die integrierte Tensorflow-Funktion. Sind diese beiden L2-Implementierungen gleichwertig?

  2. Füge ich den Regularisierungsverlust reg_loss korrekt zur endgültigen Verlustfunktion hinzu?

+0

2 scheint mir in Ordnung. – Julius

Antwort

1

Sind diese zwei L2-Implementierungen gleichwertig?

Fast, als @fabrizioM darauf hingewiesen, können Sie here für die Einführung in die l2_loss in TensorFlow docs sehen.

Füge ich den Regularisierungsverlust reg_loss korrekt zur endgültigen Verlustfunktion hinzu?

So weit so gut:)