Tensorflow,tf.nn.softmax_cross_entropy_with_logits和tf.nn.sparse_softmax_cross_entropy_with_logits之间的区别

时间:2016-12-22 12:23:09

标签: tensorflow

我已阅读docs of both functions,但就我所知,对于函数tf.nn.softmax_cross_entropy_with_logits(logits, labels, dim=-1, name=None),结果是交叉熵损失,其中logits和{{1的维度是一样的。

但是,对于函数labelstf.nn.sparse_softmax_cross_entropy_with_logitslogits的维度不一样?

您能否提供labels的更详细示例?

1 个答案:

答案 0 :(得分:5)

不同之处在于tf.nn.softmax_cross_entropy_with_logits并不假设这些类是互斥的:

  

测量离散分类任务中的概率误差   每个班级都是独立的,而不是相互排斥的。对于   例如,可以在图片中执行多标签分类   可以同时包含大象和狗。

sparse_*比较:

  

测量离散分类任务中的概率误差   哪些类是互斥的(每个条目只有一个   类)。例如,每个CIFAR-10图像都标有一个且仅一个   一个标签:图像可以是狗或卡车,但不是两者。

因此,对于稀疏函数,logitslabels的维度不同:labels每个示例包含一个数字,而logits类的数量例如,表示概率。