In a deep model, I used the Early stopping technique as below in Keras:
from keras.callbacks import EarlyStopping early_stopping = [EarlyStopping(monitor='val_loss', min_delta=0, patience=2, verbose=2, mode='auto')] model.fit(train_x, train_y, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=early_stopping, validation_data=(val_x, val_y)) model.fit(train_x, train_y, batch_size=batch_size, epochs=epochs, verbose=2, callbacks=early_stopping, validation_data=(val_x, val_y))
Now, when I run this code, in the output it prints the loss value for training and validation of each epoch.
I set the
patience=2 in the early stopping. So, it continues the training process two times after when the validation loss increased instead of decreased.
Some things like this:
Epoch 1/10 - 198s - loss: 99.7160 - val_loss: 123.0397 Epoch 2/10 - 204s - loss: 78.7000 - val_loss: 109.0344 Epoch 3/10 - 208s - loss: 65.4412 - val_loss: 78.0097 Epoch 4/10 - 268s - loss: 61.9812 - val_loss: 79.0312 Epoch 5/10 - 298s - loss: 59.1124 - val_loss: 79.3397 Epoch 6/10 - 308s - loss: 57.2200 - val_loss: 218.0397 Epoch 00007: early stopping
In the end, what will be the final weights of the model and the Loss values? The final time of training or two times before it?
If it considers the final epoch, so should it be better if I set the patience as little as possible to overcome the overfitting?