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

Metadata

Release files for dynonet 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dynonet 0.1.2
File Size Uploaded
dynonet-0.1.2.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dynonet 0.1.2
File Interpreter ABI Platform
dynonet-0.1.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 27.2 kB

Release files / dynonet-0.1.2.tar.gz

Download URL dynonet-0.1.2.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9ccb5c5a8bb00c996c3496a441a738708f4a78e661c77d8634e15bda58340da1
BLAKE2b-256 checksum
How to use checksums
b528088e03ca892f76fec17a9f5b24aa869eff80989f66bee43a82940578f462
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.9

Release files / dynonet-0.1.2-py2.py3-none-any.whl

Download URL dynonet-0.1.2-py2.py3-none-any.whl
Size 13.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
2f84c23ede4cb3a122a8e2e5638918f0cd2a1460b0d8a6572f51bb2db7156040
BLAKE2b-256 checksum
How to use checksums
97e9f1ac9b2a7ea5418b033b3641572a09bbe6c1e56a629f5b3d5df3984ad0b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page