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


Python tf.keras.losses.Loss用法及代碼示例


損失基類。

用法

tf.keras.losses.Loss(
    reduction=losses_utils.ReductionV2.AUTO, name=None
)

參數

  • reduction 類型tf.keras.losses.Reduction適用於損失。默認值為AUTO.AUTO表示縮減選項將由使用上下文確定。對於幾乎所有情況,這默認為SUM_OVER_BATCH_SIZE.當與tf.distribute.Strategy,在內置訓練循環之外,例如tf.keras compilefit, 使用AUTO或者SUM_OVER_BATCH_SIZE將引發錯誤。請參閱此自定義訓練教程更多細節。
  • name 實例的可選名稱。

由子類實現:

  • call() :包含使用 y_true , y_pred 進行損失計算的邏輯。

示例子類實現:

class MeanSquaredError(Loss):

  def call(self, y_true, y_pred):
    y_pred = tf.convert_to_tensor_v2(y_pred)
    y_true = tf.cast(y_true, y_pred.dtype)
    return tf.reduce_mean(math_ops.square(y_pred - y_true), axis=-1)

當與 tf.distribute.Strategy 一起使用時,在 tf.keras compilefit 等內置訓練循環之外,請使用 'SUM' 或 'NONE' 減少類型,並在訓練循環中明確減少損失。使用 'AUTO' 或 'SUM_OVER_BATCH_SIZE' 將引發錯誤。

有關更多詳細信息,請參閱此自定義訓練教程。

您可以使用全局批量大小來實現'SUM_OVER_BATCH_SIZE',例如:

with strategy.scope():
  loss_obj = tf.keras.losses.CategoricalCrossentropy(
      reduction=tf.keras.losses.Reduction.NONE)
  ....
  loss = (tf.reduce_sum(loss_obj(labels, predictions)) *
          (1. / global_batch_size))

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.losses.Loss。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。