tf.nn.sparse_softmax_cross_entropy_with_logits

来源:互联网 发布:苏州固锝 知乎 编辑:程序博客网 时间:2024/06/05 14:22

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

计算logits 和 labels 之间的稀疏softmax 交叉熵

度量在离散分类任务中的错误率,这些类之间是相互排斥的(每个输入只能对应唯一确定的一个类)。举例来说,每个CIFAR-10 图片只能被标记为唯一的一个标签:一张图片可能是一只狗或一辆卡车,而不能两者都是。

注意:针对这个操作,给定某一个标签的概率被认为是排外的。也就是说,软分类是不允许的,并且labels 向量必须提供一个单一的指定的真实类别的索引,为logits 的每一行(每个 minibatch 的输入)。对于软 softmax 分类来说,对每一个输入有一个概率分布,参照 softmax_cross_entropy_with_logits.

警告:这个操作期望无尺度化的logits, 因为它在内部高效地对logits 进行 softmax 。请不要用softmax 的输出调用这个操作,否则会产生错误结果。

logits 必须具有shape [batch_size, num_classes] 并且 dtype (float32 or float64)

labels 必须具有shape [batch_size],并且 dtype int64

参数:

  • logits:  无尺度化的log 概率
  • labels:  每个条目 labels[i] 必须是[0, num_classes) 的索引或者-1. 如果是-1,则相应的损失为0,不用考虑 logits[i] 的值。
返回值:
batch_size 长度的1-D Tensor,type 类型和 logits 一样,值为softmax 交叉熵损失。

logits 和 labels 的shpae


logits


labels


[python] view plain copy
  1. cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels, name='xentropy')  
  2. #print cross_entropy#  



MNIST 单层网络 softmax 的交叉熵

[python] view plain copy
  1. cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))  
原创粉丝点击