我有一个 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))
这里的问题是两个准确度分数是不同的 . 我不知道它是如何可能的,因为它们是基于相同的数据计算的 .
你能给我一些提示吗?
Update
此外,我在训练时看到 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)