Я знаком с машинным обучением, но я изучаю Tensorflow самостоятельно, читая некоторые слайды из университетов. Ниже я создаю функцию потерь для линейной регрессии только с одной функцией. Я добавляю потерю L2 к полной потере, но я не уверен, если я правильно это делать:Tensorflow - добавление L2-регуляризации потеря простой пример
# 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)
Мои конкретные вопросы:
У меня есть две строки (с комментариями как
reg 1
иreg 2
), которые вычисляют потерю L2 весаW
. Строка, помеченнаяreg 1
, использует встроенную функцию Tensorflow. Являются ли эти две реализации L2 эквивалентными?Я добавляю потери регуляризации
reg_loss
правильно к функции окончательной потери?
2 кажется, хорошо для меня. – Julius