TorchCNNBuilder is an open-source framework for the automatic creation of CNN architectures. This framework should first of all help researchers in the applicability of CNN models for a huge range of tasks, taking over most of the writing of the architecture code. This framework is distributed under the 3-Clause BSD license. All the functionality is written only using pytorch
(no third-party dependencies).
The simplest way to install framework is using pip
:
pip install torchcnnbuilder
The basic structure of the framework is presented below. Each subdirectory has its own example of using the appropriate available functionality. You can check <directory>_examples.ipynb
files in order to see the ways to use the proposed toolkit. In short, there is the following functionality:
- the ability to calculate the size of tensors after (transposed) convolutional layers
- preprocessing an n-dimensional time series in
TensorDataset
- automatic creation of (transposed) convolutional sequences
- automatic creation of (transposed) convolutional layers and (transposed) blocks from convolutional layers
The structure of the main part of the package:
├── examples
│ ├── builder_examples.ipynb
│ ├── preprocess_examples.ipynb
│ ├── models_examples.ipynb
│ └── tools # additional functions for the examples
└── torchcnnbuilder
├── preprocess
│ └── time_series.py
├── builder.py
└── models.py
Initially, the library was created to help predict n-dimensional time series (geodata), so there is a corresponding functionality and templates of predictive models (like ForecasterBase
).
- Forecasting of Sea Ice Concentration using CNN, PDE discovery and Bayesian Networks
- Surrogate Modelling for Sea Ice Concentration using Lightweight Neural Ensemble
- Post about framework development on habr.com - in russian
We try to maintain good practices of readable open source code. Therefore, if you want to participate in the development and open your pool request, pay attention to the following points:
- Every push is checked by the flake8 job. It will show you PEP8 errors or possible code improvements.
- Use this linter script after your code:
bash lint_and_check.sh
You can mark function docstrings using #noqa
, in order for flake8 not to pay attention to them.
The project is supported by FASIE - Foundation for Assistance to Small Innovative Enterprises.