我有keras
模型(称为model
)。
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=batch_size, epochs=nb_epoch,
validation_data=(X_test, Y_test))
score, acc = model.evaluate(X_test, Y_test,
batch_size=batch_size)
和
from sklearn.metrics import accuracy_score
preds = model.predict_classes(X_test, verbose=0)
print('prediction accuracy: ', accuracy_score(y_test, preds))
这里的问题是两个准确度分数不同。我不知道它是如何可能的,因为它们是基于相同的数据计算的。
你能给我一些提示吗?
更新
此外,我在培训时val_acc
和最后一步accuracy
看到了巨大差异。即使我使用相同的测试集进行培训和评估。
model.fit(X_train, Y_train, batch_size=batch_size, epochs=nb_epoch,
validation_data=(X_test, Y_test))
这是我的培训过程:
Epoch 16/20
16256/16256 [==============================] - 3s - loss: 0.1011 - acc: 0.9604 - val_loss: 0.1191 - val_acc: 0.9545
Epoch 17/20
16256/16256 [==============================] - 4s - loss: 0.0986 - acc: 0.9615 - val_loss: 0.1224 - val_acc: 0.9536
Epoch 18/20
16256/16256 [==============================] - 3s - loss: 0.0965 - acc: 0.9622 - val_loss: 0.1197 - val_acc: 0.9550
Epoch 19/20
16256/16256 [==============================] - 3s - loss: 0.0946 - acc: 0.9631 - val_loss: 0.1213 - val_acc: 0.9542
Epoch 20/20
16256/16256 [==============================] - 3s - loss: 0.0929 - acc: 0.9634 - val_loss: 0.1288 - val_acc: 0.9519
val_acc
达到0.95。
但是当我这样做时:
preds = model.predict_classes(X_test, verbose=0)
print('prediction 8 accuracy: ', accuracy_score(test['Rating'], preds+1))
准确度分数仅为0.68
。
我注意到Y_test
和y_test
是相同的
Y_test = np_utils.to_categorical(y_test, nb_classes)