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.
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:
- WH2009: A circuit with Wiener-Hammerstein behavior. Experimental dataset from http://www.nonlinearbenchmark.org
- BW: Bouc-Wen. A nonlinear dynamical system describing hysteretic effects in mechanical engineering. Experimental dataset from http://www.nonlinearbenchmark.org
- EMPS: A controlled prismatic joint (Electro Mechanical Positioning System). Experimental dataset from http://www.nonlinearbenchmark.org
For the WH2009 example, the main scripts are:
WH2009_train.py
: Training of the dynoNet modelWH2009_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ccb5c5a8bb00c996c3496a441a738708f4a78e661c77d8634e15bda58340da1 |
|
MD5 | b32acc6d63c628f422b55989f3970f0f |
|
BLAKE2b-256 | b528088e03ca892f76fec17a9f5b24aa869eff80989f66bee43a82940578f462 |
Provenance
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2f84c23ede4cb3a122a8e2e5638918f0cd2a1460b0d8a6572f51bb2db7156040 |
|
MD5 | aa44622211baa52d5e6f248f5c1e2f51 |
|
BLAKE2b-256 | 97e9f1ac9b2a7ea5418b033b3641572a09bbe6c1e56a629f5b3d5df3984ad0b1 |