我已阅读docs of both functions,但就我所知,对于函数tf.nn.softmax_cross_entropy_with_logits(logits, labels, dim=-1, name=None)
,结果是交叉熵损失,其中logits
和{{1的维度是一样的。
但是,对于函数labels
,tf.nn.sparse_softmax_cross_entropy_with_logits
和logits
的维度不一样?
您能否提供labels
的更详细示例?
答案 0 :(得分:5)
不同之处在于tf.nn.softmax_cross_entropy_with_logits
并不假设这些类是互斥的:
测量离散分类任务中的概率误差 每个班级都是独立的,而不是相互排斥的。对于 例如,可以在图片中执行多标签分类 可以同时包含大象和狗。
与sparse_*
比较:
测量离散分类任务中的概率误差 哪些类是互斥的(每个条目只有一个 类)。例如,每个CIFAR-10图像都标有一个且仅一个 一个标签:图像可以是狗或卡车,但不是两者。
因此,对于稀疏函数,logits
和labels
的维度不同:labels
每个示例包含一个数字,而logits
类的数量例如,表示概率。