Using PiNN
Below is a brief introduction of what is implemented in PiNN. In short, the two core components of PiNN are the networks - machine learning models that generates prediction from atomic structures; and models which interprets those predictions for different tasks.
Networks
Atomic neural networks (ANN) in PiNN are written in Keras. The "networks"
are Keras Models which takes atomic structures as input and outputs atomic
predictions. Layers are components of Models or networks.
pinn.layers contains reusable operations in bulding ANNs, e.g. calculation of
neighboring lists, or radial basis functions. pinn.networks contains ANN
implementations. Since PiNN networks are essentially Keras Models, they are
ready for simple regression tasks, see an example
here.
Models
In addition to layers and networks, PiNN implement several models. PiNN
models interpret the output of ANNs as physical quantities, e.g. atomic
energies. Those models enables the training of quantities derives from the
atomic predictions, like forces (from energy) and dipole moments (from partial
charges).
PiNN models are implemented as TensorFlow estimators. models are also
responsible for interfacing with external libraries like ASE to run
simulations. When training models it is recommended to use the CLI interface
of PiNN.
What to read
Checkout quick start to get started. See the
notebook examples for more examples. More details and available parameters can be found in tab Usage. To integrate PiNN with workflow, parameters of model and network can be set by using yaml format configuration file, and template can be found in their Usage page, respectly.
If you are interested in a specific application, e.g. fitting a machine-learned potential, read the available options of the potential model and network (likely PiNet2) you'd like to use.