当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.nn.RNNCellDeviceWrapper.add_loss用法及代码示例


用法

add_loss(
    losses, **kwargs
)

参数

  • losses 损失张量,或张量列表/元组。除了张量,损失也可能是创建损失张量的zero-argument callables。
  • **kwargs 用于向后兼容的附加关键字参数。接受的值:输入 - 已弃用,将自动推断。

添加损失张量,可能取决于层输入。

一些损失(例如,活动正则化损失)可能取决于调用层时传递的输入。因此,当在不同的输入 ab 上重用同一层时,layer.losses 中的一些条目可能依赖于 a 和一些依赖于 b 。此方法自动跟踪依赖关系。

此方法可以在子类层或模型的call 函数中使用,在这种情况下,losses 应该是张量或张量列表。

例子:

class MyLayer(tf.keras.layers.Layer):
  def call(self, inputs):
    self.add_loss(tf.abs(tf.reduce_mean(inputs)))
    return inputs

该方法也可以在构造过程中直接在函数模型上调用。在这种情况下,传递给此模型的任何损失张量都必须是象征性的,并且能够追溯到模型的 Input s。这些损失成为模型拓扑的一部分,并在 get_config 中进行跟踪。

例子:

inputs = tf.keras.Input(shape=(10,))
x = tf.keras.layers.Dense(10)(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Activity regularization.
model.add_loss(tf.abs(tf.reduce_mean(x)))

如果您的损失不是这种情况(例如,如果您的损失引用了模型层之一的 Variable),您可以将损失包装在 zero-argument lambda 中。这些损失不会作为模型拓扑的一部分进行跟踪,因为它们无法序列化。

例子:

inputs = tf.keras.Input(shape=(10,))
d = tf.keras.layers.Dense(10)
x = d(inputs)
outputs = tf.keras.layers.Dense(1)(x)
model = tf.keras.Model(inputs, outputs)
# Weight regularization.
model.add_loss(lambda:tf.reduce_mean(d.kernel))

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.RNNCellDeviceWrapper.add_loss。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。