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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。