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


Python tf.nn.softmax_cross_entropy_with_logits用法及代码示例


计算 logitslabels 之间的 softmax 交叉熵。

用法

tf.nn.softmax_cross_entropy_with_logits(
    labels, logits, axis=-1, name=None
)

参数

  • labels 沿类维度的每个向量都应保持有效的概率分布,例如对于标签形状为 [batch_size, num_classes] 的情况,labels[i] 的每一行都必须是有效的概率分布。
  • logits Per-label 激活,通常是线性输出。这些活化能被解释为非标准化的对数概率。
  • axis 类维度。默认为 -1,这是最后一个维度。
  • name 操作的名称(可选)。

返回

  • 包含 softmax 交叉熵损失的 Tensor。它的类型与logits 相同,其形状与labels 相同,只是它没有labels 的最后一个维度。

测量类别互斥(每个条目恰好属于一个类别)的离散分类任务中的概率误差。例如,每张 CIFAR-10 图像都带有一个且只有一个标签:图像可以是狗或卡车,但不能同时是两者。

注意:虽然这些类是互斥的,但它们的概率不一定是互斥的。所需要的只是labels 的每一行都是有效的概率分布。如果不是,则梯度的计算将不正确。

如果使用独占 labels(其中一次只有一个类为真),请参阅 sparse_softmax_cross_entropy_with_logits

用法:

logits = [[4.0, 2.0, 1.0], [0.0, 5.0, 1.0]]
labels = [[1.0, 0.0, 0.0], [0.0, 0.8, 0.2]]
tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)
<tf.Tensor:shape=(2,), dtype=float32,
numpy=array([0.16984604, 0.82474494], dtype=float32)>

警告:此操作需要未缩放的 logits,因为它在内部对 logits 执行 softmax 以提高效率。不要使用 softmax 的输出调用此操作,因为它会产生不正确的结果。

一个常见的用例是具有形状 [batch_size, num_classes] 的 logits 和标签,但支持更高的维度,axis 参数指定类维度。

logitslabels 必须具有相同的 dtype(float16 , float32float64 )。

反向传播将同时发生在 logitslabels 中。要禁止反向传播到 labels ,请将标签张量通过 tf.stop_gradient 传递给此函数。

请注意,为避免混淆,只需要将命名参数传递给此函数。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.nn.softmax_cross_entropy_with_logits。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。