PANNA-TRAIN

Purpose of Module

PANNA-TRAIN is a neural network training module for atomistic data, eg. prediction of total energy and forces given a crystal structure. It implements a separate atomic network for each species, following the seminal work of Behler and Parinello (see References [1], [2], [3]) which can later be used as interatomic potential in molecular dynamics simulations.

PANNA-TRAIN uses TensorFlow framework as the underlying neural network training and data i/o engine.

Features

PANNA-TRAIN supports all to all connected networks for each species. Networks with different number of nodes and layers are allowed. It further supports controlling the training dynamics: eg. freeze/unfreeze layers, weight transfer, decaying learning rates etc.

Building and Testing

A stable version of the module can be downloaded using the download button on this page

As a python module PANNA-TRAIN does not require installation but it relies on numpy library version >= 1.15.0, tensorflow version >= 1.13.0, and tensorboard version >= 1.13.0. Note that with version 2.0.0, tensorflow libraries went under substantial changes in structure, the 1.1X.X family supports the equally valid previous structure and is still being maintained. PANNA-TRAIN requires tensorflow 1.1X.X family of versions.

In order to set up and test the module, run the following:

$ tar -zxvf panna-master.tar.gz
$ cd panna-master
$ python3 ./panna/test-train.py

Usage

PANNA-TRAIN main script requires a configuration file that specifies the parameter of the calculation such as number of layers and nodes of each neural network layer, learning parameter etc. A typical command for using this module is as follows:

$ export PYTHONPATH=/path/to/panna/directory/panna
$ python3 train.py --config train_configuration.ini

A detailed tutorial about the contents of the configuration file can be found here.

In this comprehensive tutorial, a neural network training scenario is demonstrated from beginning to end. Network validation is a key step in network training, hence in the tutorial how to use this module together with PANNA-EVAL module used in validation is also explained. Together, these two modules cover all the steps necessary to train an atomistic neural network, starting from a data which specifies the machine learning task in (input, target output) pair form.

Source Code

PANNA-TRAIN source is currently hosted on GitLab.

Further Information

The PANNA-TRAIN module is developed with the contributions of R. Lot, Y. Shaidu, F. Pellegrini, E. Kucukbenli

References

PANNA manuscript:

[1]R. Lot, Y. Shaidu, F. Pellegrini, E. Kucukbenli. arxiv:1907.03055. Submitted (2019).

and

[2]J. Behler and M. Parrinello, Generalized Neural-Network Representation of High-Dimensional Potential-Energy Surfaces, Phys. Rev. Lett. 98, 146401 (2007)
[3]Justin S. Smith, Olexandr Isayev, Adrian E. Roitberg. ANI-1: An extensible neural network potential with DFT accuracy at force field computational cost. Chemical Science,(2017), DOI: 10.1039/C6SC05720A