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.1.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

dynonet-0.1.1-py2.py3-none-any.whl (13.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: dynonet-0.1.1.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for dynonet-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ff004766d58714b3ff5671d5e90a51f41f5c772869ae8904b8d94638e02f8199
MD5 27e9b9dcff88fa5facee6a9e1b1336be
BLAKE2b-256 2c2619869c9f8f6f7d57d75a9ab44b375ddedd22b8f423c3427cfdf9e973e690

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dynonet-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for dynonet-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2e1fe3dfe5685f19a514fcf0cdb2f0a292f4233d53c55b90cbfc066d2b738610
MD5 99e1a5044c2ac36ba5300ddc754d33ab
BLAKE2b-256 51041d4376c0259d7ab24892208a20f352569363381a32b06ee16d19e0ff733c

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