Keras模型预测多分类问题的标签

时间:2019-01-02 22:11:40

标签: python keras label predict

如果我有一组目标,也称为[1,0,9,9,7,5,4,0,4,1],并且我使用model.predict(X),则Keras会为10个样本中的每个样本返回6个项目数组。它返回6个项目,因为有6个可能的目标(0、1、4、5、7、9),而keras返回一个十进制/浮点数(对于每个标签),表示任何一个目标是正确目标的可能性。例如,对于第一个样本-y = 1 Keras返回一个看起来像这样的数组:[.1, .4,.003,.001,.5,.003]

我想知道哪个值与哪个目标匹配(.1是指1,因为它在数据集中是第一个; 0是因为它是最低的数字; 9是因为是最后一个数字,等等)。 Keras如何对预测进行排序? The documentation似乎并没有阐明这一点;它只说

  

“为输入样本生成输出预测。”

所以我不确定如何将标签与预测结果匹配。

编辑:

这是我的模型和训练代码:

X_train, X_test, y_train, y_test = train_test_split(data, labels, test_size=0.25, random_state=42)

Y_train = to_categorical(y_train)
Y_test = to_categorical(y_test)

sequence_input = Input(shape=(MAX_SEQUENCE_LENGTH,), dtype='int32')
embedded_sequences = embedding_layer(sequence_input)
x = Conv1D(64, 5, activation='relu')(embedded_sequences)
x = MaxPooling1D(4)(x)
x = Conv1D(64, 5, activation='relu')(x)
x = MaxPooling1D(4)(x)
x = Conv1D(64, 5, activation='relu')(x)
x = MaxPooling1D(4)(x)  # global max pooling
x = Flatten()(x)
x = Dense(64, activation='relu')(x)
preds = Dense(labels_Index, activation='softmax')(x)

model = Model(sequence_input, preds)
model.fit(X_train, Y_train, epochs=10, verbose = 1) 

1 个答案:

答案 0 :(得分:0)

Keras不会排序任何东西,这完全取决于如何定义用于训练模型的数据中的类并进行一键编码。

通常可以通过对每个样本取类别概率数组的argmax来恢复整数类别标签。

在您的示例中,0.1是0类,0.4是1类,0.003是2类,0.001是3类,0.5是4类,0.003是5类(总共6个类)。