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:
Ich habe zwei Linien (kommentiert als
reg 1
undreg 2
), die den L2-Verlust des Gewichts berechnenW
. Die mitreg 1
markierte Zeile verwendet die integrierte Tensorflow-Funktion. Sind diese beiden L2-Implementierungen gleichwertig?Füge ich den Regularisierungsverlust
reg_loss
korrekt zur endgültigen Verlustfunktion hinzu?
2 scheint mir in Ordnung. – Julius