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

Mar*_*rio 6 python keras tensorflow

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

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'])
Run Code Online (Sandbox Code Playgroud)

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

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"
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*gro 1

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

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