Classification Accuracy in Keras


I'm using two different functions to calculate the accuracy of my deep learning model and I am confused which one is which.

The first one is

    loss, accuracy = model.evaluate(x_train, y_train, verbose=0)
    print('Accuracy: %f' % (accuracy))
    print('Loss: %f' % (loss))

    Accuracy: 0.731495
    Loss: 1.136258

And the second way is to obtain the accuracy:

test_accuracy = history2.history['val_acc']

Accuracy is 0.731 and test_accuracy is around 0.21 Which is one is my models' accuracy


Posted 2018-05-31T12:27:45.220

Reputation: 159

4That's interesting, you are performing badly on your training set(underfitting probably) and so bad on your test set, .731 is for those set of data for which you know the answer already, and the second no is for the unknown test data – Aditya – 2018-05-31T12:30:56.290

Should be as Adtiya said, try loss, accuracy = model.evaluate(x_test , y_test verbose=0) and print again. Accuracy should be the same as history2.history['val_acc'] – nsaura – 2018-09-03T11:06:10.290



The accuracy given by Keras is the training accuracy. This is not a proper measure of the performance of your classifier, as it is not fair to measure accuracy with the data that has been fed to the NN. On the other hand, the test accuracy is a more fair measure of the real performance. As there is a big gap between them, you are overfitting very badly, and you should regularize your model. Consider using dropout or weight decay.

David Masip

Posted 2018-05-31T12:27:45.220

Reputation: 5 101

Why overfitting? It can be the case of sheer underfitting too – Aditya – 2018-05-31T15:13:55.447


test_accuracy = history2.history['val_acc']

shows your model's accuracy.


Posted 2018-05-31T12:27:45.220

Reputation: 3 275