这个正则化代码如何影响损失?

How does this regularization code affect loss?

看过一些用卷积神经网络学习的代码。我不明白这段代码的下一部分。

loss = tf.reduce_sum(tf.nn.l2_loss(tf.subtract(train_output, train_gt)))
    for w in weights:
        loss += tf.nn.l2_loss(w)*1e-4

第一行可以理解。它将学习的结果与标签进行比较,然后表示差异的平方。这就是损失的定义。但是我不明白后面的代码:for w in weights:!!

这里 w 是一个包含 10 个权重和偏差的列表。所以 len(w)20(w10 + b10)。但是这段代码为什么要计算w的平方然后乘以1e-4来加上loss呢?

是学习过程中的必需品吗?

这是你的公式:

  1. tf.subtract(train_output, train_gt) 在两个张量 train_outputtrain_gt.
  2. 之间进行逐元素减法
  3. tf.nn.l2_loss(tf.subtract(train_output, train_gt)) 从 (1) 计算结果张量的 l2 范数。
  4. tf.reduce_sum(tf.nn.l2_loss(tf.subtract(train_output, train_gt))) 对所有维度执行归约和(例如,您拥有的批次中的多个样本 - 公式中的 N 个样本)。
  5. for w in weights: loss += tf.nn.l2_loss(w)*1e-4 添加 l2 正则化项(模型中所有 l2 归一化权重的平方和)。

但是这段代码为什么要计算w的平方再乘以1e-4加上loss呢?是学习的必修课吗?

它惩罚你的权重的大值并将你的解决方案(根据权重)限制在某个有界区域。 有必要吗?有时需要,有时不需要。没有简短的答案。从阅读开始: