我遇到了一段 tensorflow 2.0 的代码片段,用于计算损失。总损失由两部分组成:1)正则化损失,2)预测损失。我的问题是为什么model.losses
正则化损失?model
这是一个实例tf.keras.Model
。我对 tensorflow 官方 API 文档有点困惑。tf.keras.Model,它说
与此层相关的损失。
访问此属性时会创建变量正则化张量,因此它非常安全:在 a 下访问损失
tf.GradientTape
会将梯度传播回相应的变量。
为什么我们可以通过访问losses
属性来获得正则化损失?另外,什么是渴望安全?如果losses
属性返回正则化损失,为什么它被命名losses
而不是regularization_loss
?
with tf.GradientTape() as tape:
outputs = model(images, training=True)
regularization_loss = tf.reduce_sum(model.losses)
pred_loss = ...
total_loss = pred_loss + regularization_loss