Physics-Aware Training (PAT) is a method to train real physical systems with backpropagation. It was introduced in Wright, Logan G. & Onodera, Tatsuhiro et al. (2021)1 to train Physical Neural Networks (PNNs) - neural networks whose building blocks are physical systems.
This repository is a PyTorch-based implementation of Physics-Aware Training. It lets users build Physical Neural Networks and automates many of the necessary steps to train them with Physics-Aware Training. To use an existing physical system as a building block in a neural network, users have to supply a class that receives batches of input data and processes them in the physical system. After specifying the trainable parameters, the system can be trained with this code. The methodology is demonstrated on an illustrative example of simulated, nonlinear coupled pendula. In our paper, we demonstrated the method on real experiments.
This repository also gives users access to documented reference code to implement or modify PAT.
Getting started
- To learn about Physical Neural Networks, Physics-Aware Training, and the scope of this repository, have a look at the Introduction.
- To see pedagogical examples with simulations of real experiments, head over to the Demonstrations.
- To apply PAT to new experiments, see How to make it work with your experiments.
- To see the source code of
physics_aware_training
, see the package in the physics_aware_training folder.
How to cite this code
If you use Physics-Aware Training in your research, please consider citing the following paper:
Logan G. Wright, Tatsuhiro Onodera, Martin M. Stein, Tianyu Wang, Darren T. Schachter, Zoey Hu, and Peter L. McMahon (2021). Deep physical neural networks enabled by a backpropagation algorithm for arbitrary physical systems. https://arxiv.org/abs/2104.13386
License
The code in this repository is released under the following license:
Creative Commons Attribution 4.0 International
A copy of this license is given in this repository as license.txt.