煤油model.predict_类给出错误的标签

2024-05-06 17:51:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我的模型就像

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.evaluate和{}模式有什么区别?我在哪里犯错误?在


Tags: 模型buildrightaddmodelmainmodemerge
1条回答
网友
1楼 · 发布于 2024-05-06 17:51:49

由于您在模型编译中要求loss='binary_cross_entropy'和{},Keras推断您对二进制精度感兴趣,而这正是它在model.evaluate()中返回的结果;实际上,由于您有14个类,您实际上对分类精度感兴趣,这是通过model.predict_classes()报告的。在

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

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

如果出于任何原因,您想坚持使用loss='binary_crossentropy'(诚然,这是一个非常不寻常的选择),那么您应该更改模型编译,以澄清您想要的分类准确性,如下所示:

^{pr2}$

在这两种情况中,您会发现model.evaluate()和{}报告的准确度是一样的,因为它们应该是一样的。在

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

相关问题 更多 >