View source on GitHub |
Abstract base class used to build new callbacks.
tf.keras.callbacks.Callback()
Callbacks can be passed to keras methods such as fit
, evaluate
, and predict
in order to hook into the various stages of the model training and inference lifecycle.
To create a custom callback, subclass keras.callbacks.Callback
and override the method associated with the stage of interest. See https://www.tensorflow.org/guide/keras/custom_callback for more information.
training_finished = False class MyCallback(tf.keras.callbacks.Callback): def on_train_end(self, logs=None): global training_finished training_finished = True model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))]) model.compile(loss='mean_squared_error') model.fit(tf.constant([[1.0]]), tf.constant([[1.0]]), callbacks=[MyCallback()]) assert training_finished == True
If you want to use Callback
objects in a custom training loop:
callbacks.CallbackList
so they can all be called together.You will need to manually call all the on_*
methods at the appropriate locations in your loop. Like this:
callbacks = tf.keras.callbacks.CallbackList([...]) callbacks.append(...) callbacks.on_train_begin(...) for epoch in range(EPOCHS): callbacks.on_epoch_begin(epoch) for i, data in dataset.enumerate(): callbacks.on_train_batch_begin(i) batch_logs = model.train_step(data) callbacks.on_train_batch_end(i, batch_logs) epoch_logs = ... callbacks.on_epoch_end(epoch, epoch_logs) final_logs=... callbacks.on_train_end(final_logs)
The logs
dictionary that callback methods take as argument will contain keys for quantities relevant to the current batch or epoch (see method-specific docstrings).
Attributes | |
---|---|
params | Dict. Training parameters (eg. verbosity, batch size, number of epochs...). |
model | Instance of keras.models.Model . Reference of the model being trained. |
on_batch_begin
on_batch_begin( batch, logs=None )
A backwards compatibility alias for on_train_batch_begin
.
on_batch_end
on_batch_end( batch, logs=None )
A backwards compatibility alias for on_train_batch_end
.
on_epoch_begin
on_epoch_begin( epoch, logs=None )
Called at the start of an epoch.
Subclasses should override for any actions to run. This function should only be called during TRAIN mode.
Args | |
---|---|
epoch | Integer, index of epoch. |
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_epoch_end
on_epoch_end( epoch, logs=None )
Called at the end of an epoch.
Subclasses should override for any actions to run. This function should only be called during TRAIN mode.
Args | |
---|---|
epoch | Integer, index of epoch. |
logs | Dict, metric results for this training epoch, and for the validation epoch if validation is performed. Validation result keys are prefixed with val_ . For training epoch, the values of the Model 's metrics are returned. Example : {'loss': 0.2, 'accuracy': 0.7} . |
on_predict_batch_begin
on_predict_batch_begin( batch, logs=None )
Called at the beginning of a batch in predict
methods.
Subclasses should override for any actions to run.
Note that if the steps_per_execution
argument to compile
in tf.keras.Model
is set to N
, this method will only be called every N
batches.
Args | |
---|---|
batch | Integer, index of batch within the current epoch. |
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_predict_batch_end
on_predict_batch_end( batch, logs=None )
Called at the end of a batch in predict
methods.
Subclasses should override for any actions to run.
Note that if the steps_per_execution
argument to compile
in tf.keras.Model
is set to N
, this method will only be called every N
batches.
Args | |
---|---|
batch | Integer, index of batch within the current epoch. |
logs | Dict. Aggregated metric results up until this batch. |
on_predict_begin
on_predict_begin( logs=None )
Called at the beginning of prediction.
Subclasses should override for any actions to run.
Args | |
---|---|
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_predict_end
on_predict_end( logs=None )
Called at the end of prediction.
Subclasses should override for any actions to run.
Args | |
---|---|
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_test_batch_begin
on_test_batch_begin( batch, logs=None )
Called at the beginning of a batch in evaluate
methods.
Also called at the beginning of a validation batch in the fit
methods, if validation data is provided.
Subclasses should override for any actions to run.
Note that if the steps_per_execution
argument to compile
in tf.keras.Model
is set to N
, this method will only be called every N
batches.
Args | |
---|---|
batch | Integer, index of batch within the current epoch. |
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_test_batch_end
on_test_batch_end( batch, logs=None )
Called at the end of a batch in evaluate
methods.
Also called at the end of a validation batch in the fit
methods, if validation data is provided.
Subclasses should override for any actions to run.
Note that if the steps_per_execution
argument to compile
in tf.keras.Model
is set to N
, this method will only be called every N
batches.
Args | |
---|---|
batch | Integer, index of batch within the current epoch. |
logs | Dict. Aggregated metric results up until this batch. |
on_test_begin
on_test_begin( logs=None )
Called at the beginning of evaluation or validation.
Subclasses should override for any actions to run.
Args | |
---|---|
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_test_end
on_test_end( logs=None )
Called at the end of evaluation or validation.
Subclasses should override for any actions to run.
Args | |
---|---|
logs | Dict. Currently the output of the last call to on_test_batch_end() is passed to this argument for this method but that may change in the future. |
on_train_batch_begin
on_train_batch_begin( batch, logs=None )
Called at the beginning of a training batch in fit
methods.
Subclasses should override for any actions to run.
Note that if the steps_per_execution
argument to compile
in tf.keras.Model
is set to N
, this method will only be called every N
batches.
Args | |
---|---|
batch | Integer, index of batch within the current epoch. |
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_train_batch_end
on_train_batch_end( batch, logs=None )
Called at the end of a training batch in fit
methods.
Subclasses should override for any actions to run.
Note that if the steps_per_execution
argument to compile
in tf.keras.Model
is set to N
, this method will only be called every N
batches.
Args | |
---|---|
batch | Integer, index of batch within the current epoch. |
logs | Dict. Aggregated metric results up until this batch. |
on_train_begin
on_train_begin( logs=None )
Called at the beginning of training.
Subclasses should override for any actions to run.
Args | |
---|---|
logs | Dict. Currently no data is passed to this argument for this method but that may change in the future. |
on_train_end
on_train_end( logs=None )
Called at the end of training.
Subclasses should override for any actions to run.
Args | |
---|---|
logs | Dict. Currently the output of the last call to on_epoch_end() is passed to this argument for this method but that may change in the future. |
set_model
set_model( model )
set_params
set_params( params )
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/keras/callbacks/Callback