tf.losses

2022-09-03 22:02:33 浏览数 (2)

一、概述

1、类

  • class Reduction: 减少损失的类型。

2、函数

  • absolute_difference(...): 将绝对差异损失添加到训练过程中。
  • add_loss(...): 将外部定义的损失添加到损失集合中。
  • compute_weighted_loss(...): 计算加权损失。
  • cosine_distance(...): 在训练过程中增加余弦距离损失。(弃用参数)
  • get_losses(...): 从loss_collection获取损失列表。
  • get_regularization_loss(...): 获取总正则化损失。
  • get_regularization_losses(...): 获取正则化损失列表。
  • get_total_loss(...): 返回一个张量,其值表示总损失。
  • hinge_loss(...): 在训练过程中增加hinge loss。
  • huber_loss(...): 在训练程序中添加一个Huber损失项。
  • log_loss(...): 将日志丢失项添加到训练过程中。
  • mean_pairwise_squared_error(...): 在训练过程中增加成对错误平方损失。
  • mean_squared_error(...): 将平方和损失添加到训练过程中。
  • sigmoid_cross_entropy(...): 使用tf.nn.sigmoid_cross - entropy_with_logits创建交叉熵损失。
  • softmax_cross_entropy(...): 使用tf. nf .softmax_cross_entropy_with_logits_v2创建交叉熵损失。
  • sparse_softmax_cross_entropy(...): 使用tf. nn.sparse_softmax_cross_entropy_with_logits实现交叉熵损失。

二、重要的函数

1、tf.losses.huber_loss

在训练程序中添加一个Huber损失项。

代码语言:javascript复制
tf.losses.huber_loss(
    labels,
    predictions,
    weights=1.0,
    delta=1.0,
    scope=None,
    loss_collection=tf.GraphKeys.LOSSES,
    reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)

对于error=labels-prediction中的每个值x,计算如下:

代码语言:javascript复制
  0.5 * x^2                  if |x| <= d
  0.5 * d^2   d * (|x| - d)  if |x| > d

其中d是delta。

参见:https://en.wikipedia.org/wiki/Huber_loss

权重作为损失的系数。如果提供一个标量,则损失只需按给定值进行缩放。如果权值是一个大小张量[batch_size],则通过权值向量中对应的元素重新计算批次中每个样本的总损失。如果权重的形状与预测的形状相匹配,那么预测的每个可度量元素的损失将按相应的权重值进行缩放。

参数:

  • labels:地面真相输出张量,与“预测”维度相同。
  • predictions:预测输出。
  • weights:可选张量,其秩要么为0,要么与标签的秩相同,并且必须对标签(即,所有尺寸必须为1,或与对应的损耗尺寸相同)。
  • delta:浮点数,huber损失函数从二次函数变为线性函数的点。
  • scope:计算损失时执行的操作的范围。
  • loss_collection:将损失添加到其中的集合。
  • reduction:适用于损失的减额类型。

返回值:

  • 加权损失浮点张量。如果还原为零,则其形状与标签相同;否则,它就是标量。

可能产生的异常:

  • ValueError: If the shape of predictions doesn't match that of labels or if the shape of weights is invalid. Also if labels or predictions is None.

Eager Compatibility

  • 当急切地执行时,会忽略loss_collection参数。考虑持有收益值或通过tf.keras.模型收集损失。

2、tf.losses.add_loss

将外部定义的损失添加到损失集合中。

代码语言:javascript复制
tf.losses.add_loss(
    loss,
    loss_collection=tf.GraphKeys.LOSSES
)

参数:

  • loss:损耗张量。
  • loss_collection:将损失添加到其中的可选集合。

0 人点赞