一、概述
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 ofpredictions
doesn't match that oflabels
or if the shape ofweights
is invalid. Also iflabels
orpredictions
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:将损失添加到其中的可选集合。