CNN中用Logits或Softmax层计算准确率为何结果近乎一致?
为啥用Logits和Softmax输出算CNN准确率结果几乎一样?
这事儿我之前也疑惑过!评估CNN的准确率时,我本来觉得肯定得用Softmax层输出的预测标签和目标标签比对,但实际用Logits(最后一层全连接层的原始输出,就只是矩阵乘法加偏置的w*x+b结果)来计算的话,准确率居然几乎完全相同。
先看核心的准确率计算代码:
matches = tf.equal(tf.argmax(y_pred,1),tf.argmax(y,1)) acc = tf.reduce_mean(tf.cast(matches,tf.float32))
这里的y_pred是没有加激活函数的最终全连接层输出,代码如下:
y_pred = normal_full_layer(second_hidden_layer,6)
数字6代表我们要做6个类别的分类任务。
用y_pred(也就是Logits)计算出来的准确率大概在96%左右,对应的准确率图表:
之后我给y_pred加上Softmax激活得到pred_softmax,代码是这样的:
pred_softmax = tf.nn.softmax(y_pred)
再用它来计算准确率,结果和之前几乎一模一样,对应的准确率图表:
内容的提问来源于stack exchange,提问作者Salman Shaukat
相关产品推荐
相关产品推荐

