今天在学习过程中产生了一个小疑问,现记录如下:
在利用TensorFlow搭建图像分类器中 cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(),
这个函数把交叉熵和softmax函数写在一起,是可以提高运算速度吗?还是仅仅把减少代码行数呢?
我以前的做法是先用softmax求出需要被识别的物体在每个类别的概率,再计算交叉熵。
因为softmax层并不会改变最终的分类结果(排序),所以tensorflow将softmax层与交叉熵函数进行封装,形成一个函数方便计算:tf.nn.softmax_cross_entropy_with_logits(logits= , labels=)。
但是我刚刚说的函数在这基础上多了一个sparse。
我的理解是原本是拿独热码计算比如要识别的东西是第5个,就是000010(这是没有sparse的情形)
然后有了sparse的话就是5,是直接用标签计算交叉熵所以可以加速计算进程,不过这样应该只适用于只有一个分类结果的情形。