首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras:如何获得预测类的置信度?

Keras:如何获得预测类的置信度?
EN

Stack Overflow用户
提问于 2019-06-12 20:48:10
回答 2查看 4.6K关注 0票数 4

我在Keras/TensorFlow工作。这是我的Keras模型:

代码语言:javascript
复制
model = Sequential()
model.add(Dense(512, input_shape=(max_words,)))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

在训练步骤和测试步骤之后,我正在编写一个接受输入(我不知道他的类别)的方法。该方法返回具有置信度的类别预测。现在这个方法只返回class的预测。方法如下:

代码语言:javascript
复制
def predict(input):
    try:
        x_prediction = tokenize.texts_to_matrix(input)
        q = model.predict(np.array([x_prediction[0],]))
        predicted_label = text_labels[np.argmax(q)]

        print("Prediction: " + predicted_label + "\n")

    except:
        return "Error"

我应该在方法中添加什么来获得相应预测的置信度?我不想使用变量'q‘的置信度,但我想使用贝叶斯方法。我该怎么做呢?谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 21:14:14

Keras中,model.predict()实际上会返回置信度。因此,在代码片段中,您可能希望输出q以查看所有置信度级别的整个数组。

np.argmax(x)给出了数组中的参数(位置),其中X具有最大值。

票数 2
EN

Stack Overflow用户

发布于 2019-06-12 21:13:31

向量q中的值是每个类的概率,它充当置信度值,因此您只需获取最大值并将其作为置信度返回。

但请注意,这些概率是由模型产生的,除非您使用产生校准概率的模型(如贝叶斯神经网络),否则它们可能过于自信。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56562623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档