tensorflow - 如何计算神经网络预测的置信度得分

标签 tensorflow machine-learning keras confidence-interval uncertainty

我正在使用深度神经网络模型(在keras中实现)来进行预测。像这样的事情:

def make_model():
 model = Sequential()       
 model.add(Conv2D(20,(5,5), activation = "relu"))
 model.add(MaxPooling2D(pool_size=(2,2)))    
 model.add(Flatten())
 model.add(Dense(20, activation = "relu"))
 model.add(Lambda(lambda x: tf.expand_dims(x, axis=1)))
 model.add(SimpleRNN(50, activation="relu"))
 model.add(Dense(1, activation="sigmoid"))    
 model.compile(loss = "binary_crossentropy", optimizer = adagrad, metrics = ["accuracy"])

 return model

model = make_model()
model.fit(x_train, y_train, validation_data = (x_validation,y_validation), epochs = 25, batch_size = 25, verbose = 1)

##Prediciton:
prediction = model.predict_classes(x)
probabilities = model.predict_proba(x) #I assume these are the probabilities of class being predictied

我的问题是分类(二元)问题。我希望计算每个预测的置信度分数,即我想知道 - 我的模型是否 99% 确定它是“0”,还是 58% 确定它是“0”。

我找到了一些关于如何做到这一点的观点,但无法实现它们。我希望遵循的方法是:“使用分类器,当您输出时,您可以将值解释为属于每个特定类别的概率。您可以使用它们的分布来粗略衡量您对观察结果属于该类别的信心程度”

我应该如何使用上述模型进行预测,以便我对每个预测都有信心?我希望有一些实际的例子(最好是在 Keras 中)。

最佳答案

softmax 是一种估计模型预测置信度的有问题的方法。

最近有一些关于这个主题的论文。

您可以寻找神经网络的“校准”以找到相关论文。

这是一个您可以从 - https://arxiv.org/pdf/1706.04599.pdf 开始的示例

关于tensorflow - 如何计算神经网络预测的置信度得分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59851961/

相关文章:

python - ValueError : Shapes (None, 1) 和 (None, 3) 不兼容

python - tensorflow :过滤器与内核和步幅

tensorflow - 为什么直接比较时tensorflow的精度比keras差?

python - Keras 没有使用完整的 CPU 内核进行训练

python - 在控制台中打印出摘要

statistics - 随着时间的推移用户行为的监督学习

python - 将 Scikit-Learn OneHotEncoder 与 Pandas DataFrame 结合使用

c# - 在 Accord.Net 中如何使用 One-Class SVM 进行异常检测?

conv-neural-network - keras 在每个时代都造成相同的损失

tensorflow - 如何使用 tensorflow 纠正 keras 的这个自定义损失函数?