2016-09-12 2 views
2

Я знаком с машинным обучением, но я изучаю 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) 

Мои конкретные вопросы:

  1. У меня есть две строки (с комментариями как reg 1 и reg 2), которые вычисляют потерю L2 веса W. Строка, помеченная reg 1, использует встроенную функцию Tensorflow. Являются ли эти две реализации L2 эквивалентными?

  2. Я добавляю потери регуляризации reg_loss правильно к функции окончательной потери?

+0

2 кажется, хорошо для меня. – Julius

ответ

1

Являются ли эти две реализации L2 эквивалентны?

Почти как @fabrizioM отметили, вы можете увидеть here для введения в l2_loss в TensorFlow документации.

Могу ли я регулярно возвращать reg_loss регуляризации к функции окончательной потери?

До сих пор так хорошо:)

Смежные вопросы