densechen / eve-mli

eve-mli: making learning interesting
MIT License
9 stars 0 forks source link
deep-learning deep-reinforcement-learning eve-mli model-compression network-architecture pruning pypi pytorch quantization-efficient-network reinforcement-learning spiking-neural-networks
logo

OpenSpiking

GitHub last commit Documentation Status PyPI PyPI - Python Version

OpenSpiking is an open-source deep learning framework used to devise and modify a network architecture in a flexible and interesting way.

We provide several jupyter notebooks under ./examples to demonstrate how to build various network structures.

The most features of OpenSpiking are that: it provides a well defined framework which make your network structure can be upgraded along with the learning of weights.

Any contributions to OpenSpiking is welcome!

Installation

Install from PyPI:

pip install eve-mli
# pip install git+https://github.com/densechen/eve-mli.git

Developers can download and install the latest version from:

GitHub:

git clone https://github.com/densechen/eve-mli.git
cd eve-mli
python setup.py install

Gitee:

git clone https://gitee.com/densechen/eve-mli.git
cd eve-mli
python setup.py install

Vailidate installation:

python -c "import eve; print(eve.__version__)"

Quick Start

The core module of eve-mli is eve.core.Eve, this module is a wrapper of torch.nn.Module.

In Eve, the parameter ended with _eve will be treated as an eve parameters, and we call the rest as torch parameters. In the same way, we also define eve buffers and torch buffers.

As for eve parameters, you can fetch and attach an .obs properties via eve.core.State class, and assign an upgrade function to modify the eve parameter. As for eve buffers, it is useful to cache the hidden states, all the eve buffers will be cleared once we call Eve.reset().

In default, the model defined by Eve is the same with nn.Module. You can train it directly for obtaining a baseline model. Then, Eve.spike() will turn it into a spiking neural network module, and Eve.quantize() will trun it into a quantization neural network model.

About the project

The documentation can be found here. (Auto-building of documentation fails sometimes, you can build it manually via cd docs; make html).

The project remains in development. We encourage more volunteers to come together!

eve-mli-v0.1.0 is released!

Next to do

Add CUDA support for speeding up, refer to here.

About the authors

Dengsheng Chen Master @ National University of Defense Technology densechen@foxmail.com

References

PyTorch

stable-baselines3

spikingjelly

Model-Compression-Deploy

Awesome-Deep-Neural-Network-Compression