Skip to main content

dynoNet: A neural network architecture for learning dynamical systems

This repository contains the Python code to reproduce the results of the paper dynoNet: A neural network architecture for learning dynamical systems by Marco Forgione and Dario Piga.

In this work, we introduce the linear dynamical operator as a differentiable layer compatible with back-propagation-based training. The operator is parametrized as a rational transfer function and thus can represent an infinite impulse response (IIR) filtering operation, as opposed to the Convolutional layer of 1D-CNNs that is equivalent to finite impulse response (FIR) filtering.

In the dynoNet architecture, linear dynamical operators are combined with static (i.e., memoryless) non-linearities which can be either elementary activation functions applied channel-wise; fully connected feed-forward neural networks; or other differentiable operators.

dense_dynonet

A 15-min presentation about dynoNet is available here.

Folders:

  • dynonet: PyTorch implementation of the linear dynamical operator (aka G-block in the paper) used in dynoNet
  • examples: examples using dynoNet for system identification
  • util: definition of metrics R-square, RMSE, fit index
  • doc: paper & slides

Three examples discussed in the paper are:

For the WH2009 example, the main scripts are:

  • WH2009_train.py: Training of the dynoNet model
  • WH2009_test.py: Evaluation of the dynoNet model on the test dataset, computation of metrics.

Similar scripts are provided for the other examples.

NOTE: the original data sets are not included in this project. They have to be manually downloaded from http://www.nonlinearbenchmark.org and copied in the data sub-folder of the example.

Software requirements:

Simulations were performed on a Python 3.7 conda environment with

  • numpy
  • scipy
  • matplotlib
  • pandas
  • pytorch (version 1.4)

These dependencies may be installed through the commands:

conda install numpy scipy pandas matplotlib
conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

Local installation:

From PyPI

Type in terminal:

pip install dynonet

This will install the latest stable version packaged on PyPI: https://pypi.org/project/dynonet/

From a local copy of this repository

Navigate to a local copy of this repository, where setup.py and setup.cfg are located. Then, type in terminal:

pip install -e .

Citing

If you find this project useful, we encourage you to

  • Star this repository :star:
  • Cite the paper
@article{forgione2021dyno,
  title={\textit{dyno{N}et}: A neural network architecture for learning dynamical systems},
  author={Forgione, M. and Piga, D.},
  journal={International Journal of Adaptive Control and Signal Processing},
  volume={35},
  number={4},
  pages={612--626},
  year={2021},
  publisher={Wiley}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dynonet-0.1.2.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dynonet-0.1.2-py2.py3-none-any.whl (13.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file dynonet-0.1.2.tar.gz.

File metadata

  • Download URL: dynonet-0.1.2.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.9

File hashes

Hashes for dynonet-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9ccb5c5a8bb00c996c3496a441a738708f4a78e661c77d8634e15bda58340da1
MD5 b32acc6d63c628f422b55989f3970f0f
BLAKE2b-256 b528088e03ca892f76fec17a9f5b24aa869eff80989f66bee43a82940578f462

See more details on using hashes here.

File details

Details for the file dynonet-0.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: dynonet-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 13.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.9

File hashes

Hashes for dynonet-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2f84c23ede4cb3a122a8e2e5638918f0cd2a1460b0d8a6572f51bb2db7156040
MD5 aa44622211baa52d5e6f248f5c1e2f51
BLAKE2b-256 97e9f1ac9b2a7ea5418b033b3641572a09bbe6c1e56a629f5b3d5df3984ad0b1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page