當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.nn.RNNCellDropoutWrapper.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.RNNCellDropoutWrapper.add_loss。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。