为什么我们在 L2 正则化中添加偏置项?



我想了解 l2 正则化在这里是如何实现的。在 l2 正则化中,我们为损失函数添加一个权重平方。但是在此代码中,我们还添加了偏差项。为什么会这样?

`x = tf.placeholder(tf.float32, [None, nPixels])
W1 = tf.Variable(tf.random_normal([nPixels, nNodes1], stddev=0.01))
b1 = tf.Variable(tf.zeros([nNodes1])
y1 = tf.nn.sigmoid(tf.matmul(x, W1) + b1)
W2 = tf.Variable(tf.random_normal([nNodes1, nLabels], stddev=0.01))
b2 = tf.Variable(tf.zeros([nLabels]))
y = tf.matmul(y1, W2) + b2
y_ = tf.placeholder(tf.float32, [None, nLabels])
l2_loss = tf.nn.l2_loss(W1) + tf.nn.l2_loss(b1) + tf.nn.l2_loss(W2) + 
tf.nn.l2_loss(b2)
cross_entropy = 
tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=y_, logits=y))    
regularized_cross_entropy = cross_entropy + beta * l2_loss`

这种偏差与我们在 l2 正则化中使用的偏差不同。 这是我们在神经网络中添加的偏差,以保持值不等于零。

最新更新