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
numpymatplotlibtensorflowtensorboardtqdmjupyter
Branches:
master: Implementation of beta-VAE [1] for reference. Includes an example in the/analysisfolder 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_conceptsto 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 shortcutsnnto themodel.pycode anddlto thedata_loader.pycode. - 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).