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.
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).