繁体   English   中英

Tensorflow-添加L2正则化损失的简单示例

[英]Tensorflow - adding L2 regularization loss simple example

我熟悉机器学习,但是我正在阅读大学的一些幻灯片,从而独自学习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 1reg 2 )来计算重量W的L2损失。 标记为reg 1的行使用Tensorflow内置函数。 这两个L2实现是否等效?

  2. 我是否将正则化损失reg_loss正确添加到最终损失函数中?

几乎

根据L2Loss操作码

output.device(d) = (input.square() * static_cast<T>(0.5)).sum();

它也乘以0.5(或除以2 )。

这两个L2实现是否等效?

就像@fabrizioM指出的那样,几乎可以在这里看到TensorFlow文档中l2_loss的介绍。

我是否将正则化损失reg_loss正确添加到最终损失函数中?

到现在为止还挺好 : )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM