Directories¶
Core bootstrap architecture¶
.
├── bootstrap
| ├── run.py # train & eval models
| ├── compare.py # compare experiments
| ├── engines
| | ├── engine.py
| | └── factory.py
| ├── datasets # datasets classes & functions
| | ├── dataset.py
| | ├── transforms.py
| | ├── utils.py
| | └── factory.py
| ├── models
| | ├── model.py
| | ├── factory.py
| | ├── networks
| | | └── factory.py
| | ├── criterions
| | | ├── nll.py
| | | ├── cross_entropy.py
| | | └── factory.py
| | └── metrics
| | ├── accuracy.py
| | └── factory.py
| ├── optimizers
| | ├── grad_clipper.py
| | ├── lr_scheduler.py
| | └── factory.py
| ├── options
| | ├── abstract.py # example of default options
| | └── example.py
| ├── views # plotting utilities
| | ├── view.py
| | └── factory.py
| └── lib
| └── logger.py # logs manager
| └── options.py # options manager
├── data # contains data only (raw and preprocessed)
└── logs # experiments dir (one directory per experiment)
/!usually data and logs contain symbolic links to directories stored on your fastest drive.
Project architecture¶
Simply create a new module containing:
- your dataset in myproject/datasets,
- your model (network, criterion, metric) in myproject/models,
- your optimizer (if needed) in myproject/optimizers,
- your options in myproject/options.
We advise you to keep the same organization than in bootstrap directory and avoid modifying the core bootstrap files (bootstrap/*.py, main.py, view.py). Nevertheless, you are free to explore different ways.
.
├── bootstrap # avoid modifications to bootstrap/*
├── myproject
| ├── options # add your yaml files here
| ├── datasets
| | ├── mydataset.py
| | └── factory.py # init dataset with your options
| ├── models
| | ├── model.py # if custom model is needed
| | ├── factory.py # if custom model is needed
| | ├── networks
| | | ├── mynetwork.py
| | | └── factory.py
| | ├── criterions # if custom criterion is needed
| | | ├── mycriterion.py
| | | └── factory.py
| | └── metrics # if custom metric is needed
| | ├── mymetric.py
| | └── factory.py
| ├── engines # if custom engine is needed
| ├── optimizers # if custom optimizer is needed
| └── views # if custom plotting is needed
├── data
└── logs
Some examples are available in the repository: - mnist