【问题标题】:Labels for Keras Model Predicting Multi-Classification ProblemKeras 模型预测多分类问题的标签
【发布时间】:2019-05-29 13:04:18
【问题描述】:

如果我有一组目标,也就是 [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]

我想知道哪个值与哪个目标匹配(0.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) 

【问题讨论】:

    标签: python keras label predict


    【解决方案1】:

    Keras 不订购任何东西,这完全取决于您用于训练模型的数据中的类是如何定义和 one-hot 编码的。

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

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

    【讨论】:

    • 感谢您参与其中!我不想找到整数类标签(对于这个问题)。我想找到与我的标签相关的整数类标签。 Keras 只知道我训练它的数据。想象一下,我什至没有编码 - 这些 (0,1,4,5,7,9) 只是标识我的类的离散整数。 (0,1,2,3,4,5) 是相同的类,但对我来说毫无意义,因为我不知道我的哪个标签与它们相关。
    • Keras 不存储这些信息,thr 标签的语义是在模型训练时定义的,必须单独保存。
    • 怎么样?这可能就是我正在寻找的答案。
    • @LiamHanninen 你应该在你的问题中包含训练脚本才能回答。
    • @LiamHanninen 我没有看到数据集或标签,语义来自数据集。
    猜你喜欢
    • 2019-09-09
    • 2020-07-17
    • 2021-04-21
    • 2020-06-11
    • 2017-08-23
    • 2020-05-11
    • 1970-01-01
    • 2018-08-04
    • 2019-05-21
    相关资源
    最近更新 更多