我必须在不使用tf.contrib.layers.l2_regularizer的情况下构建l2 regualarizer。相反,我必须使用给定的提示: tf.losses.add_loss并添加到集合tf.GraphKeys.REGULARIZATION_LOSSES。
我是张量流的新手,对如何实现它一无所知。如果有人可以帮助我,那将是很棒的。我正在使用python 3.6 我不知道下面的代码应该造成什么损失
def __eq__(self, other):
# Protect against comparisons of other classes.
if not isinstance(other, __class__):
return NotImplemented
return self.value == other.value and self.suit == other.suit
答案 0 :(得分:0)
tf.contrib.layers.l2_regularizer
基本上只适用tf.nn.l2_loss
。因此,您可以将其应用于体重,
W = tf.get_variable('W', dtype, shape=[input_dim, num_units], initializer)
或使用其公式output = sum(W ** 2) / 2
tf.nn.l2_loss
不会将其输出添加到损失收集中。因此,您需要手动进行操作。
l2 = tf.nn.l2_loss(W)
tf.losses.add_loss(l2, loss_collection=tf.GraphKeys.REGULARIZATION_LOSSES)
之后,您可以使用
检查该集合的内容tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
或
tf.losses.get_regularization_loss()
将此损失添加到您的主要损失功能中。希望这可以使它更清晰