# Template Classification Bundle This bundle is meant to be an example of classification in 2D which you can copy and modify to create your own bundle. It is only roughly trained for the synthetic data you can generate with [this notebook](./generate_data.ipynb) so doesn't do anything useful on its own. The purpose is to demonstrate the base line for classification network bundles. To use this bundle, copy the contents of the whole directory and change the definitions for network, data, transforms, or whatever else you want for your own new classification bundle. ## Generating Demo Data Run all the cells of [this notebook](./generate_data.ipynb) to generate training and test data. These will be 2D nifti files containing volumes with randomly generated circle, triangle or rectangle. The classification task is very easy so your network will train in minutes with the default configuration of values. A test data directory will separately be created since the inference config is configured to apply the network to every nifti file in a given directory with a certain pattern. ## Training To train a new network the `train.yaml` script can be used alone with no other arguments (assume `BUNDLE` is the root directory of the bundle): ``` python -m monai.bundle run --config_file configs/train.yaml ``` The training config includes a number of hyperparameters like `learning_rate` and `num_workers`. These control aspects of how training operates in terms of how many processes to use, when to perform validation, when to save checkpoints, and other things. Other aspects of the script can be modified on the command line so these aren't exhaustive but are a guide to the kind of parameterisation that make sense for a bundle. ## Override the `train` config to execute multi-GPU training: ``` torchrun --standalone --nnodes=1 --nproc_per_node=2 -m monai.bundle run --config_file "['configs/train.yaml','configs/multi_gpu_train.yaml']" ``` Please note that the distributed training-related options depend on the actual running environment; thus, users may need to remove `--standalone`, modify `--nnodes`, or do some other necessary changes according to the machine used. For more details, please refer to [pytorch's official tutorial](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html). ## Override the `train` config to execute evaluation with the trained model: ``` python -m monai.bundle run --config_file "['configs/train.yaml','configs/evaluate.yaml']" ``` ## Execute inference: ``` python -m monai.bundle run --config_file configs/inference.yaml ``` ## Other Considerations There is no `scripts` directory containing a valid Python module to be imported in your configs. This wasn't necessary for this bundle but if you want to include custom code in a bundle please follow the bundle tutorials on how to do this.