我的CNN输出一组值,我必须检查最大值并将其作为预测类。例如:
-148.7290802 , -133.90687561, -90.850914 , -135.78356934,
-128.6325531 , -125.76812744, -85.41909027, -72.3269577 ,
-103.51300812
对于类索引6。
现在,我怎样才能对结果有信心?
我的设置是:
predict_op = [tf.argmax(py_x,1), py_x]
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(py_x, Y))
train_op = tf.train.RMSPropOptimizer(learningRate, decayRate).minimize(cost)
现在返回更新的代码:[[0. 0. 0. 0. 0 0. 0 0. 0 0. 0 0. 1. 0。]]
predict_op = tf.nn.softmax(py_x)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(py_x, Y))
train_op = tf.train.RMSPropOptimizer(learningRate, decayRate).minimize(cost)
答案 0 :(得分:3)
在最后阶段应用 softmax ;这将在最后阶段产生后验概率。你已经在设置中使用softmax了;只需在最终向量上使用它就可以将其转换为RMS概率。该预测的置信度只是顶级项目的概率。
如需快速说明,请参阅广告和统计下的Wikipedia page。本节还描述了整体模型的可信度。
答案 1 :(得分:0)
Yarin Gal disagrees with the accepted answer:“顺便说一句,使用softmax来获取概率实际上不足以获取模型不确定性”“这是因为标准模型将通过softmax而不是整个分布传递预测均值。” ,他提供了一个例子来阐明这一点:“如果您给我几张猫和狗的图片-然后您要求我对一张新的猫照片进行分类-我应该以很高的信心返回预测。但是如果您给我鸵鸟的照片,并强迫我的手去决定它是猫还是狗–我最好以非常低的信心返回预测。”
He suggests一种基于辍学的方法,其中在查询时,您会以随机辍学的方式前馈几次,并观察答案的分散性。我强烈建议您阅读the blog post,以严格对待不确定性,尤其是对于深网。
不幸的是,我还没有足够的TensorFlow忍者来确切地知道如何实现它,并给出了一些聪明的代码。