[tensorflow] tf.nn.sparse_softmax_cross_entropy_with_logits的使用

函数说明

在计算交叉熵之前,通常要用到softmax层来计算结果的概率分布。因为softmax层并不会改变最终的分类结果(排序),所以,tensorflow将softmax层与交叉熵函数进行封装,形成一个函数方便计算:tf.nn.softmax_cross_entropy_with_logits(logits= , labels=)。
为了加速计算过程,针对只有一个正确答案(例如MNIST识别)的分类问题,tensorflow提供了tf.nn.sparse_softmax_cross_entropy_with_logits(logits= , labels=)。

两个函数的区别

两个函数虽然功能类似,但是其参数labels有明显区别。tf.nn.softmax_cross_entropy_with_logits()中的logits和labels的shape都是[batch_size, num_classes],而tf.nn.sparse_softmax_cross_entropy_with_logits()中的labels是稀疏表示的,是 [0,num_classes)中的一个数值,代表正确分类结果。即sparse_softmax_cross_entropy_with_logits 直接用标签计算交叉熵,而 softmax_cross_entropy_with_logits 是标签的onehot向量参与计算。softmax_cross_entropy_with_logits 的 labels 是 sparse_softmax_cross_entropy_with_logits 的 labels 的一个独热版本(one hot version)。

PS:交叉熵是的log是ln

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容