Keras:如何获取两个以上类别的预测标签

时间:2019-02-02 16:57:45

标签: python numpy tensorflow keras

我使用TensorFlow后端在Keras中实现了图像分类器。对于具有两个输出类别的数据集,我检查了预测的标签,如下所示:

if  result[0][0] == 1:
    prediction ='adathodai'
else:
    prediction ='thamarathtai'

完整代码链接: here

通过三个类,我得到[[0. 0. 1.]]作为结果输出。如何以其他方式检查两个类别以上的预测标签?

1 个答案:

答案 0 :(得分:4)

对于带有k个标签的多类别分类问题,您可以使用model.predict_classes()检索预测类别的索引。玩具示例:

import keras
import numpy as np

# Simpel model, 3 output nodes
model = keras.Sequential()
model.add(keras.layers.Dense(3, input_shape=(10,), activation='softmax'))

# 10 random input data points
x = np.random.rand(10, 10)
model.predict_classes(x)
> array([1, 1, 2, 1, 2, 1, 2, 1, 1, 1])

如果标签在列表中,则可以使用预测的类来获取预测的标签:

labels = ['label1', 'label2', 'label3']
[labels[i] for i in model.predict_classes(x)]
> ['label2', 'label2', 'label3', 'label2', 'label3', 'label2', 'label3', 'label2', 'label2', 'label2']

在幕后,model.predict_classes返回预测中每一行的最大预测类别概率的索引:

model.predict_classes(x)
> array([1, 1, 2, 1, 2, 1, 2, 1, 1, 1])
model.predict(x).argmax(axis=-1) # same thing
> array([1, 1, 2, 1, 2, 1, 2, 1, 1, 1])