tensorflow - 如何计算神经网络预测的置信度分数
问题描述
我正在使用深度神经网络模型(在 中实现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
我的问题是分类(二进制)问题。我想计算每一个的置信度分数,prediction
即我想知道 - 我的模型是 99% 确定它是“0”还是 58% 是“0”。
我找到了一些关于如何做到这一点的观点,但无法实施。我希望遵循的方法说:“使用分类器,当您输出时,您可以将值解释为属于每个特定类别的概率。您可以使用它们的分布来粗略衡量您对观察属于该类别的信心程度。”
我应该如何使用上述模型进行预测,以便我对每个预测都有信心?我会很感激一些实际的例子(最好在 Keras 中)。
解决方案
softmax 是一种估计模型预测置信度的有问题的方法。
最近有几篇关于这个主题的论文。
您可以寻找神经网络的“校准”以找到相关论文。
这是您可以开始的一个示例 - https://arxiv.org/pdf/1706.04599.pdf
推荐阅读
- reactjs - React JS 中的简单表单
- firebase - 参数类型“Future”不能分配给参数类型“String”
- python - 有没有办法使使用 bzrlib 工具箱 Python 3 兼容的 Python 2.7 脚本?由于 Python 3 不支持 bzrlib
- go - io.Copy 在 goroutine 中防止阻塞
- git - git diff 显示相同行的差异
- python - 设置多个全局变量时,“并非所有参数都在字符串格式化期间转换”
- ios - 将 Int 数据库值转换为 CoreData 问题
- php - 如何根据主机名在 .htaccess 上设置 php_value?
- discord.js - Discord.js v12 角色添加到提到的用户问题
- c - GCC:没有这样的文件或目录