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


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


计算 logitslabels 之间的稀疏 softmax 交叉熵。

用法

tf.nn.sparse_softmax_cross_entropy_with_logits(
    labels, logits, name=None
)

参数

  • labels 形状为 [d_0, d_1, ..., d_{r-1}]Tensor(其中 rlabels 和结果的等级)和 dtype int32int64labels 中的每个条目都必须是 [0, num_classes) 中的索引。当此操作在 CPU 上运行时,其他值将引发异常,并为 GPU 上的相应损失和梯度行返回 NaN
  • logits 形状 [d_0, d_1, ..., d_{r-1}, num_classes] 和 dtype float16 , float32float64 的未缩放对数概率。
  • name 操作的名称(可选)。

返回

  • labels 具有相同形状和与logits 相同类型的Tensor,具有softmax 交叉熵损失。

抛出

  • ValueError 如果 logits 是标量(需要秩 >= 1)或者标签的秩不等于 logits 的秩减一。

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

注意:对于这个操作,给定标签的概率被认为是排他的。也就是说,不允许使用软类,并且labels 向量必须为logits 的每一行(每个小批量条目)的真实类提供单个特定索引。对于每个条目的概率分布的软 softmax 分类,请参阅softmax_cross_entropy_with_logits_v2

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

一个常见的用例是具有形状 [batch_size, num_classes] 的 logits 和形状 [batch_size] 的标签,但支持更高的维度,在这种情况下,假设 dim -th 维度的大小为 num_classeslogits 必须具有 float16 , float32float64 的数据类型,并且 labels 必须具有 int32int64 的数据类型。

logits = tf.constant([[2., -5., .5, -.1],
                      [0., 0., 1.9, 1.4],
                      [-100., 100., -100., -100.]])
labels = tf.constant([0, 3, 1])
tf.nn.sparse_softmax_cross_entropy_with_logits(
    labels=labels, logits=logits).numpy()
array([0.29750752, 1.1448325 , 0.        ], dtype=float32)

为避免混淆,建议仅将命名参数传递给此函数。

相关用法


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