阅读(10.6k) 书签 (0)

TensorFlow函数:tf.losses.huber_loss

2018-08-23 12:02 更新

tf.losses.huber_loss函数

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
)

定义在:tensorflow/python/ops/losses/losses_impl.py.

将Huber Loss术语添加到训练过程中.

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

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

weights作为loss的系数.如果提供了标量,那么loss只是按给定值进行缩放.如果weights是一个大小为[batch_size]的张量,那么批次的每个样本的总loss由weights向量中的相应元素重新调整.如果weights的形状与predictions形状匹配,则predictions的每个可测量元素的loss由相应的weights值缩放.

参数:

  • labels:真实的输出张量,与“predictions”相同.
  • predictions:预测的输出.
  • weights:可选的Tensor,其秩为0或与labels具有相同的秩,并且必须可广播到labels(即,所有维度必须为1,或者与相应的losses维度相同).
  • delta:float,huber loss函数从二次函数变为线性函数的点.
  • scope:计算loss时执行的操作范围.
  • loss_collection:将添加loss的集合.
  • reduction:适用于loss的减少类型.

返回:

加权损失浮动Tensor,如果reduction是NONE,则它的形状与labels相同,否则,它是标量.

可能引发的异常:

  • ValueError:如果形状predictions的形状与labels不匹配,或weights的形状是无效的;或者如果labels或predictions为None,则会发生此异常.