CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/main/006_Callbacks.ipynb
Views: 47
Dataset import and exploration
Refer to https://github.com/better-data-science/TensorFlow/blob/main/003_TensorFlow_Classification.ipynb for detailed preparation instructions
Modelling
Callbacks list
I like to declare it beforehand
ModelCheckpoint
It will save the model locally on the current epoch if it beats the performance on the previous one
The configuration below saves it to a
hdf5
file in the following format:<dir>/model-<epoch>-<accuracy>.hdf5
Model is saved only if the validation accuracy is higher than on the previous epoch
ReduceLROnPlateau
Basically if a metric (validation loss) doesn't decrease for a number of epochs (10), reduce the learning rate
New learning rate = old learning rate * factor (0.1)
nlr = 0.01 * 0.1 = 0.001
You can also set the minimum learning rate below the model won't go
EarlyStopping
If a metric (validation accuracy) doesn't increase by some minimum delta (0.001) for a given number of epochs (10) - kill the training process
CSVLogger
Captures model training history and dumps it to a CSV file
Useful for analyzing the performance later
For simplicity's sake we'll treat test set as a validation set
In real deep learning projects you'll want to have 3 sets: training, validation, and test
We'll tell the model to train for 1000 epochs, but the
EarlyStopping
callback will kill it way beforeSpecify callbacks in the
fit()
function
Final evaluation
You can now load the best model - it will be the one with the highest epoch number
Save yourself some time by calling
predict_classes()
instead ofpredict()
It assigns the classes automatically - you don't have to calculate them from probabilities
Evaluate as you normally would