我的模型就像
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
和{
由于您在模型编译中要求},Keras推断您对二进制精度感兴趣,而这正是它在
loss='binary_cross_entropy'
和{model.evaluate()
中返回的结果;实际上,由于您有14个类,您实际上对分类精度感兴趣,这是通过model.predict_classes()
报告的。在因此,您应该将模型编译中的loss函数更改为
categorical_crossentropy
:如果出于任何原因,您想坚持使用
^{pr2}$loss='binary_crossentropy'
(诚然,这是一个非常不寻常的选择),那么您应该更改模型编译,以澄清您想要的分类准确性,如下所示:在这两种情况中,您会发现}报告的准确度是一样的,因为它们应该是一样的。在
model.evaluate()
和{有关更详细的解释和使用MNIST数据的示例,请参见my answer here。在
相关问题 更多 >
编程相关推荐