Code for: R. Iten, T. Metger, H.Wilming, L. del Rio, and R. Renner. "Discovering physical concepts with neural networks", arXiv:1807.10300 (2018).
This repository contains the trained Tensorflow models used in the paper as well as code to load, train and analyze them.
An overview of how this work relates to other research on the use of AI for the discovery of physical concepts, and recent advances based on this research, is presented in the book "Artificial Intelligence for Scientific Discoveries" (2023).
Requires:
- Python 2.7
numpy
matplotlib
tensorflow
tensorboard
tqdm
jupyter
Branches:
master
: Implementation of beta-VAE [1] for reference. Includes an example in the/analysis
folder that shows how to set up and train a network.pendulum
: SciNet finds correct physical parameters describing a damped pendulum.angular_momentum
: SciNet finds and exploits angular momentum conservation to make predictions.qubit
: SciNet recovers correct number of parameters describing quantum states.copernicus
: SciNet discovers heliocentric model of the solar system.
To use the code:
- Clone the repository.
- Add the cloned directory
nn_physical_concepts
to your python path. See here for instructions for doing this in a virtual environment. Without a virtual environment, see here. - Import
from scinet import *
. This includes the shortcutsnn
to themodel.py
code anddl
to thedata_loader.py
code. - Import additional files (e.g. data generation scripts) using
import scinet.my_data_generator as my_data_gen_name
.
Generated data files are stored in the data
directory. Saved models are stored in the tf_save
directory. Tensorboard logs are stored in the tf_log
directory.
Some documentation is available in the code. For further questions, please contact us directly.
[1] Higgins, I. et al. beta-VAE: "Learning Basic Visual Concepts with a Constrained Variational Framework", ICLR (2017).