gpt4 book ai didi

python - Keras - model.predict_classes 给出了错误的标签

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:00 24 4
gpt4 key购买 nike

我的模型是这样的

print('Build main model...')
model = Sequential()
model.add(Merge([left, right], mode='sum'))
model.add(Dense(14, activation='softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

当我使用 model.evaluate([xtest1, xtest2], y_test) 时,我得到了 90% 的准确率,但是当我使用 model.predict_classes([x_test1, x_xtest2]) 时,我得到了完全错误的类标签,由此我的准确性显着下降。 model.evaluatemodel.predict_classes 模式有什么区别?我在哪里犯了错误?

最佳答案

由于您在模型编译中要求 loss='binary_cross_entropy'metric=['accuracy'],Keras 推断您对 二进制精度,这是它在 model.evaluate() 中返回的值;事实上,由于您有 14 个类,您实际上对分类 准确性感兴趣,这是通过 model.predict_classes() 报告的准确性。

因此,您应该将模型编译中的损失函数更改为categorical_crossentropy:

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

如果出于某种原因,你想坚持使用 loss='binary_crossentropy'(诚然,这将是一个非常不寻常的选择),你应该更改模型编译以阐明你想要分类准确度如下:

from keras.metrics import categorical_accuracy
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=[categorical_accuracy])

在这两种情况下,您会发现 model.evaluate()model.predict_classes() 报告的准确度是相同的,因为它们应该是.

有关更详细的解释和使用 MNIST 数据的示例,请参阅 my answer here .

关于python - Keras - model.predict_classes 给出了错误的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com