High-level functions--prep, train, eval, predict, learncurve--now dispatch to lower level functions based on the task and/or dataset
Currently all parameters of the lower level functions must also be parameters of the higher level function, that then passes them in as args
This results in a combinatorial explosion of parameters for the high level function and makes it hard to know which parameters are for which lower level function
We should instead have the high level function accept a params argument that can be one of a set of dataclasses.
E.g., vak.train will accept train_params that can be vak.train.frame_classification.TrainParams or vak.train.dimensionality_reduction.TrainParams.
This will also make it easier to map from a config file to params classes if we use similar levels in the config file, e.g.
[vak.train.frame_classification]
pretrained_weights_path = '/dev/null/multiverse'
High-level functions--prep, train, eval, predict, learncurve--now dispatch to lower level functions based on the task and/or dataset
Currently all parameters of the lower level functions must also be parameters of the higher level function, that then passes them in as args
This results in a combinatorial explosion of parameters for the high level function and makes it hard to know which parameters are for which lower level function
We should instead have the high level function accept a
paramsargument that can be one of a set of dataclasses.E.g.,
vak.trainwill accepttrain_paramsthat can bevak.train.frame_classification.TrainParamsorvak.train.dimensionality_reduction.TrainParams.This will also make it easier to map from a config file to params classes if we use similar levels in the config file, e.g.