callback for creating simple custom callbacks onthefly this callback is constructed with anonymous functions that will be called at the appropriate time during model fit evaluate predict note that the callbacks expects positional arguments as onepochbegin and onepochend expect two positional arguments epoch logs ontrainbegin and ontrainend expect one positional argument logs ontrainbatchbegin and ontrainbatchend expect two positional arguments batch logs see callback class definition for the full list of functions and their expected arguments args onepochbegin called at the beginning of every epoch onepochend called at the end of every epoch ontrainbegin called at the beginning of model training ontrainend called at the end of model training ontrainbatchbegin called at the beginning of every train batch ontrainbatchend called at the end of every train batch kwargs any function in callback that you want to override by passing functionnamefunction for example lambdacallback ontrainendtrainendfn the custom function needs to have same arguments as the ones defined in callback example python print the batch number at the beginning of every batch batchprintcallback lambdacallback ontrainbatchbeginlambda batch logs printbatch stream the epoch loss to a file in json format the file content is not wellformed json but rather has a json object per line import json jsonlog open losslog json mode wt buffering1 jsonloggingcallback lambdacallback onepochendlambda epoch logs jsonlog write json dumps epoch epoch loss logs loss n ontrainendlambda logs jsonlog close terminate some processes after having finished model training processes cleanupcallback lambdacallback ontrainendlambda logs p terminate for p in processes if p isalive model fit callbacksbatchprintcallback jsonloggingcallback cleanupcallback callback for creating simple custom callbacks on the fly this callback is constructed with anonymous functions that will be called at the appropriate time during model fit evaluate predict note that the callbacks expects positional arguments as on_epoch_begin and on_epoch_end expect two positional arguments epoch logs on_train_begin and on_train_end expect one positional argument logs on_train_batch_begin and on_train_batch_end expect two positional arguments batch logs see callback class definition for the full list of functions and their expected arguments args on_epoch_begin called at the beginning of every epoch on_epoch_end called at the end of every epoch on_train_begin called at the beginning of model training on_train_end called at the end of model training on_train_batch_begin called at the beginning of every train batch on_train_batch_end called at the end of every train batch kwargs any function in callback that you want to override by passing function_name function for example lambdacallback on_train_end train_end_fn the custom function needs to have same arguments as the ones defined in callback example python print the batch number at the beginning of every batch batch_print_callback lambdacallback on_train_batch_begin lambda batch logs print batch stream the epoch loss to a file in json format the file content is not well formed json but rather has a json object per line import json json_log open loss_log json mode wt buffering 1 json_logging_callback lambdacallback on_epoch_end lambda epoch logs json_log write json dumps epoch epoch loss logs loss n on_train_end lambda logs json_log close terminate some processes after having finished model training processes cleanup_callback lambdacallback on_train_end lambda logs p terminate for p in processes if p is_alive model fit callbacks batch_print_callback json_logging_callback cleanup_callback
from keras.api_export import keras_export
from keras.callbacks.callback import Callback


@keras_export("keras.callbacks.LambdaCallback")
class LambdaCallback(Callback):
    

    def __init__(
        self,
        on_epoch_begin=None,
        on_epoch_end=None,
        on_train_begin=None,
        on_train_end=None,
        on_train_batch_begin=None,
        on_train_batch_end=None,
        **kwargs,
    ):
        super().__init__()
        self.__dict__.update(kwargs)
        if on_epoch_begin is not None:
            self.on_epoch_begin = on_epoch_begin
        if on_epoch_end is not None:
            self.on_epoch_end = on_epoch_end
        if on_train_begin is not None:
            self.on_train_begin = on_train_begin
        if on_train_end is not None:
            self.on_train_end = on_train_end
        if on_train_batch_begin is not None:
            self.on_train_batch_begin = on_train_batch_begin
        if on_train_batch_end is not None:
            self.on_train_batch_end = on_train_batch_end