Skip to main content

dynoNet: A neural network architecture for learning dynamical systems

Project description

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}
}

Project details


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

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

Uploaded Python 2 Python 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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page