Training accuracy vs validation accuracy on deep models
Neither of the above mentioned methods could be a potent indicator of the performance of a model. 

A simple way to train the model just enough so that it generalizes well on unknown datasets would be to monitor the validation loss. Training should be stopped once the validation loss progressively starts increasing over multiple epochs. Beyond this point, the model learns the statistical noise within the data and starts overfitting.



This technique of Early stopping could be implemented in Keras with the help of a callback function:

class EarlyStop(tf.keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs={}):
        if(logs.get('val_loss') &lt; LOSS_THRESHOLD and logs.get('val_categorical_accuracy') &gt; ACCURACY_THRESHOLD):
            self.model.stop_training = True

callbacks= EarlyStop()
model.fit(...,callbacks=[callbacks])


The Loss and Accuracy thresholds can be estimated after a trial run of the model by monitoring the validation/training error graph.