阅读(11.7k) 书签 (0)

TensorFlow函数:tf.losses.sigmoid_cross_entropy

2018-09-04 17:39 更新

tf.losses.sigmoid_cross_entropy函数

tf.losses.sigmoid_cross_entropy(
    multi_class_labels,
    logits,
    weights=1.0,
    label_smoothing=0,
    scope=None,
    loss_collection=tf.GraphKeys.LOSSES,
    reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)

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

使用tf.nn.sigmoid_cross_entropy_with_logits创建交叉熵loss.

weights作为loss的系数.如果提供了标量,那么loss只是按给定值进行缩放.如果weights是形状为[batch_size]的张量,则loss权重适用于每个相应的样本.

如果label_smoothing非零,则将标签平滑为1/2:

new_multiclass_labels = multiclass_labels * (1 - label_smoothing)
                        + 0.5 * label_smoothing

参数:

  • multi_class_labels:{0, 1}中的[batch_size, num_classes]目标整数标签.
  • logits:Float [batch_size, num_classes]记录网络的输出.
  • weights:可选的Tensor,其秩为0或与labels具有相同的秩,并且必须可广播到labels(即,所有维度必须为1与相应的losses维度相同).
  • label_smoothing:如果大于0,则平滑标签.
  • scope:计算loss时执行的操作范围.
  • loss_collection:将添加loss的集合.
  • reduction:适用于loss的减少类型.

返回:

与logits具有相同类型的加权损失Tensor;如果reduction是NONE,则它的形状与logits相同;否则,它是标量.

可能引发的异常:

  • ValueError:如果logits的形状与multi_class_labels不匹配,或形状weights无效,或者如果weights是NONE;或者如果multi_class_labels或logits为NONE.