如何在具有张量流的CNN中实现置信度?

时间:2016-06-30 21:38:42

标签: python neural-network tensorflow conv-neural-network

我的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) 

2 个答案:

答案 0 :(得分:3)

在最后阶段应用 softmax ;这将在最后阶段产生后验概率。你已经在设置中使用softmax了;只需在最终向量上使用它就可以将其转换为RMS概率。该预测的置信度只是顶级项目的概率。

如需快速说明,请参阅广告和统计下的Wikipedia page。本节还描述了整体模型的可信度。

答案 1 :(得分:0)

Yarin Gal disagrees with the accepted answer:“顺便说一句,使用softmax来获取概率实际上不足以获取模型不确定性”“这是因为标准模型将通过softmax而不是整个分布传递预测均值。” ,他提供了一个例子来阐明这一点:“如果您给我几张猫和狗的图片-然后您要求我对一张新的猫照片进行分类-我应该以很高的信心返回预测。但是如果您给我鸵鸟的照片,并强迫我的手去决定它是猫还是狗–我最好以非常低的信心返回预测。”

He suggests一种基于辍学的方法,其中在查询时,您会以随机辍学的方式前馈几次,并观察答案的分散性。我强烈建议您阅读the blog post,以严格对待不确定性,尤其是对于深网。

不幸的是,我还没有足够的TensorFlow忍者来确切地知道如何实现它,并给出了一些聪明的代码。