The function to immediately get a Learner ready to train for tabular data
The main function you probably want to use in this module is tabular_learner. It will automatically create a TabularModel suitable for your data and infer the right loss function. See the tabular tutorial for an example of use in context.
def TabularLearner( dls:fastai.data.core.DataLoaders, # `DataLoaders` containing fastai or PyTorch `DataLoader`s model:Callable, # PyTorch model for training or inference loss_func:Optional[Callable]=None, # Loss function. Defaults to `dls` loss opt_func:fastai.optimizer.Optimizer | fastai.optimizer.OptimWrapper=Adam, # Optimization function for training lr:float|slice=0.001, # Default learning rate splitter:Callable=trainable_params, # Split model into parameter groups. Defaults to one parameter group cbs:fastai.callback.core.Callback | collections.abc.MutableSequence |None=None, # `Callback`s to add to `Learner` metrics:Union[Callable, collections.abc.MutableSequence, NoneType]=None, # `Metric`s to calculate on validation set path:str| pathlib.Path |None=None, # Parent directory to save, load, and export models. Defaults to `dls` `path` model_dir:str| pathlib.Path='models', # Subdirectory to save and load models wd:float|int|None=None, # Default weight decay wd_bn_bias:bool=False, # Apply weight decay to normalization and bias parameters train_bn:bool=True, # Train frozen normalization layers moms:tuple=(0.95, 0.85, 0.95), # Default momentum for schedulers default_cbs:bool=True, # Include default `Callback`s):
def tabular_learner( dls:fastai.tabular.data.TabularDataLoaders, layers:list=None, # Size of the layers generated by `LinBnDrop` emb_szs:list=None, # Tuples of `n_unique, embedding_size` for all categorical features config:dict=None, # Config params for TabularModel from `tabular_config` n_out:int=None, # Final output size of the model y_range:Tuple=None, # Low and high for the final sigmoid function*, loss_func:Optional[Callable]=None, # Loss function. Defaults to `dls` loss opt_func:fastai.optimizer.Optimizer | fastai.optimizer.OptimWrapper=Adam, # Optimization function for training lr:float|slice=0.001, # Default learning rate splitter:Callable=trainable_params, # Split model into parameter groups. Defaults to one parameter group cbs:fastai.callback.core.Callback | collections.abc.MutableSequence |None=None, # `Callback`s to add to `Learner` metrics:Union[Callable, collections.abc.MutableSequence, NoneType]=None, # `Metric`s to calculate on validation set path:str| pathlib.Path |None=None, # Parent directory to save, load, and export models. Defaults to `dls` `path` model_dir:str| pathlib.Path='models', # Subdirectory to save and load models wd:float|int|None=None, # Default weight decay wd_bn_bias:bool=False, # Apply weight decay to normalization and bias parameters train_bn:bool=True, # Train frozen normalization layers moms:tuple=(0.95, 0.85, 0.95), # Default momentum for schedulers default_cbs:bool=True, # Include default `Callback`s):
Get a Learner using dls, with metrics, including a TabularModel created using the remaining params.
If your data was built with fastai, you probably won’t need to pass anything to emb_szs unless you want to change the default of the library (produced by get_emb_sz), same for n_out which should be automatically inferred. layers will default to [200,100] and is passed to TabularModel along with the config.
Use tabular_config to create a config and customize the model used. There is just easy access to y_range because this argument is often used.
def predict( row:pandas.Series, # Features to be predicted):
Predict on a single sample
We can pass in an individual row of data into our TabularLearner’s predict method. It’s output is slightly different from the other predict methods, as this one will always return the input as well: