Callback Utilities
Log Values From Callbacks
fastxtend adds the ability to log additional values from callbacks via LogDispatch
callback and Learner._log_values
& Learner._log_dict
.
To log additional values to a supported logger, import LogDispatch
and then pass values as arguments to self.learn._log_values
or as a dictionary to self.learn._log_dict
in after_batch
for training values and after_epoch
for validation values.
from fastxtend.callback.utils import *
def ExampleCallback(Callback)
def after_batch(self):
self.learn._log_values(train_value1=value1, train_value2=value2)
def after_epoch(self):
self.learn._log_dict({'valid/value1':value1, 'valid/value2':value2})
LogDispatch
will update a train and valid dictionary using the argument names as keys, and will call each supported logger’s update method after Recorder
runs.
If imported LogDispatch
will automatically be added to the default fastai callbacks.
Supported loggers:
fastxtend uses LogDispatch
across multiple callbacks, such as EMAWarmupCallback
and ProgressiveResize
, to log additional information.
PRs to add additional supported loggers are welcome.
Weights and Biases Features
LogDispatch.log_wandb_table
allows logging a Weights and Biases Table in a callback.
def ExampleCallback(Callback)
def after_fit(self):
self.learn.log_dispatch.log_wandb_table(name='pandas_df', dataframe=pandas_df)
LogDispatch.log_wandb_summary
allows logging Weights and Biases Summary Metrics in a callback.
def ExampleCallback(Callback)
def after_fit(self):
self.learn.log_dispatch.log_wandb_summary(name='summary_metric', summary=summary_metric)
LogDispatch
LogDispatch (after_create=None, before_fit=None, before_epoch=None, before_train=None, before_batch=None, after_pred=None, after_loss=None, before_backward=None, after_cancel_backward=None, after_backward=None, before_step=None, after_cancel_step=None, after_step=None, after_cancel_batch=None, after_batch=None, after_cancel_train=None, after_train=None, before_validate=None, after_cancel_validate=None, after_validate=None, after_cancel_epoch=None, after_epoch=None, after_cancel_fit=None, after_fit=None)
A default callback for dispatching additional values to loggers
LogDispatch.log_wandb_table
LogDispatch.log_wandb_table (name:str, **kwargs)
Log wandb.Table
to Weights and Biases. See wandb.Table
for details
LogDispatch.log_wandb_summary
LogDispatch.log_wandb_summary (name:str, summary:Callable)
Log Summary Metrics to Weights and Biases. See wandb.summary
for details
Learner._log_values
Learner._log_values (**kwargs)
Update additional logging values from arguments using LogDispatch
.
Learner._log_dict
Learner._log_dict (value_dict:dict)
Update additional logging values from a dictionary using LogDispatch
.
Callback Scheduler
CallbackScheduler
is a utlitity method for callback developers to modifying callback values on a schedule.
fastxtend uses it in EMAWarmupCallback
to schedule the EMA decay rate.
CallbackScheduler
CallbackScheduler ()
A mixin for scheduling values in a Callback
CallbackScheduler.setup_schedule
CallbackScheduler.setup_schedule (n_epoch:int, dls_len:int, start_value:Union[int,float], final_value:Union[int,float], start:Union[int,float], finish:Union[int,float], schedule:Calla ble[...,fastai.callback.schedule._Annea ler]=<function SchedCos>, ndigits:Union[int,float,NoneType]=None, callback_name:str='CallbackScheduler', resume:bool=False)
Setup the schedule for schedule_step
. Call during Callback.begin_fit
Type | Default | Details | |
---|---|---|---|
n_epoch | int | Number of training epochs. From a callback pass n_epoch | |
dls_len | int | Length of the training dataset | |
start_value | Numeric | Initial scheduling value | |
final_value | Numeric | Final scheduling value | |
start | Numeric | Start schedule in percent of training steps (float) or epochs (int, index 0) | |
finish | Numeric | Finish schedule in percent of training steps (float) or epochs (int, index 0) | |
schedule | Callable[…, _Annealer] | SchedCos | Schedule type. Any fastai schedule annealer |
ndigits | Numeric | None | None | Round return value to ndigits if set using Python’s round . |
callback_name | str | CallbackScheduler | Name of scheduler for warning & error messages |
resume | bool | False | Whether training has resumed or not |
CallbackScheduler.schedule_step
CallbackScheduler.schedule_step (value:Union[int,float], pct_train:float)
Takes a scheduling step and returns updated value
Type | Details | |
---|---|---|
value | Numeric | Value to schedule. Value is returned as the passed in type |
pct_train | float | Training progress in percent. From a callback pass self.pct_train |