Git Product home page Git Product logo

rsmi-ne's Introduction

RSMI-NE

License

rsmine is a Python package, implemented using Tensorflow, for optimising coarse-graining rules for real-space renormalisation group by maximising real-space mutual information. This work results from the Horizon 2020 COMPLEX ML project.

Overview

rsmine employs state-of-the-art results for estimating mutual information (MI) by maximising its lower-bounds parametrised by deep neural networks [Poole et al. (2019), arXiv:1905.06922v1]. This allows it to overcome the severe limitations of the initial proposals for constructing real-space RG transformations by MI-maximization in [M. Koch-Janusz and Z. Ringel, Nature Phys. 14, 578-582 (2018), P.M. Lenggenhager et al., Phys.Rev. X 10, 011037 (2020)], and to reconstruct the relevant operators of the theory, as detailed in the manuscripts accompanying this code [D.E. Gökmen, Z. Ringel, S.D. Huber and M. Koch-Janusz, Phys. Rev. Lett. 127, 240603 (2021) and Phys. Rev. E 104, 064106 (2021)].

System requirements

Hardware requirements

rsmine can be run on a standard personal computer. It has been tested on the following setup (without GPU):

  • CPU: 2.3 GHz Quad-Core Intel Core i5, Memory: 8 GB 2133 MHz LPDDR3

Software requirements

This package has been tested on the following systems with Python 3.8.5:

  • macOS:
    • Catalina (10.15)
    • Big Sur (11.1)
    • Monterey (12.5.1)

rsmine mainly depends on the following Python packages:

  • matplotlib
  • numpy
  • pandas
  • scipy
  • scikit-learn
  • tensorflow 2.0
  • tensorflow-probability

Installation

From pip:

pip install rsmine

Or directly from the source: clone RSMI-NE from GitHub

git clone https://github.com/RSMI-NE/RSMI-NE
cd RSMI-NE

and install the rsmine package via pip in editable mode

pip install -e .

or create a virtual environment and install there:

./install.sh

Getting started

The package can be used by importing the rsmine module and its submodules:

import rsmine

import rsmine.coarsegrainer.build_dataset as ds
import rsmine.coarsegrainer.cg_optimisers as cg_opt

Jupyter notebooks demonstrating the basic usage in simple examples are provided in https://github.com/RSMI-NE/RSMI-NE/tree/main/examples.

Citation

If you use RSMI-NE in your work, please cite our publications Phys. Rev. Lett. 127, 240603 (2021) and Phys. Rev. E 104, 064106 (2021):

@article{PhysRevLett.127.240603,
  title = {Statistical Physics through the Lens of Real-Space Mutual Information},
  author = {G\"okmen, Doruk Efe and Ringel, Zohar and Huber, Sebastian D. and Koch-Janusz, Maciej},
  journal = {Phys. Rev. Lett.},
  volume = {127},
  issue = {24},
  pages = {240603},
  numpages = {7},
  year = {2021},
  month = {Dec},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevLett.127.240603},
  url = {https://link.aps.org/doi/10.1103/PhysRevLett.127.240603}
}

@article{PhysRevE.104.064106,
  title = {Symmetries and phase diagrams with real-space mutual information neural estimation},
  author = {G\"okmen, Doruk Efe and Ringel, Zohar and Huber, Sebastian D. and Koch-Janusz, Maciej},
  journal = {Phys. Rev. E},
  volume = {104},
  issue = {6},
  pages = {064106},
  numpages = {17},
  year = {2021},
  month = {Dec},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevE.104.064106},
  url = {https://link.aps.org/doi/10.1103/PhysRevE.104.064106}
}

rsmi-ne's People

Contributors

dgoekmen avatar maciekkj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

rsmi-ne's Issues

Add generator function for chop data

Would be useful to use directly a generator function for chop data (possibly by utilising the generator function for rsmi data) during the training to avoid memory issues.

Benchmark and optimise the generator function for rsmi data

During one epoch:

  • We first wait for the file to be opened, if we are reading from a file. This seems to be the major overhead for us.
  • Then we wait until the data entry from the file (or dataset) is fetched. This is repeated as many times as the number of samples.
  • Finally we use the data for training, also repeated as many times as the number of samples.

A strategy would be to prefetch the data for the next training step while the model is training. For this we can use tf.data.Dataset.prefetch transformation. It can be used to decouple the time when data is produced from time when data is consumed by using a background thread.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.