BPNN

Behler-Parrinello Neural Network, see ref. [behler_constructinghighdimensionalneural_2015] for details.

pinn.networks.bpnn(tensors, sf_spec, nn_spec, rc=5.0, act='tanh', cutoff_type='f1', fp_range=[], fp_scale=False, preprocess=False, use_jacobian=True)

Network function for Behler-Parrinello Neural Network

Example of sf_spec:

[{'type':'G2', 'i': 1, 'j': 8, 'Rs': [1.,2.], 'eta': [0.1,0.2]},
 {'type':'G2', 'i': 8, 'j': 1, 'Rs': [1.,2.], 'eta': [0.1,0.2]},
 {'type':'G4', 'i': 8, 'j': 8, 'lambd':[0.5,1], 'zeta': [1.,2.], 'eta': [0.1,0.2]}]

The symmetry functions are defined according to the paper:

Behler, Jörg. “Constructing High-Dimensional Neural Network Potentials: A Tutorial Review.” International Journal of Quantum Chemistry 115, no. 16 (August 15, 2015): 103250. https://doi.org/10.1002/qua.24890. (Note the naming of symmetry functions is different from http://dx.doi.org/10.1063/1.3553717)

For more detials about symmetry functions, see the definitions of symmetry functions.

Example of nn_spec:

{8: [32, 32, 32], 1: [16, 16, 16]}
Parameters:
  • tensors – input data (nested tensor from dataset).
  • sf_spec (dict) – symmetry function specification.
  • nn_spec (dict) – elementwise network specification, each key points to a list specifying the number of nodes in the feed-forward subnets.
  • rc (float) – cutoff radius.
  • cutoff_type (string) – cutoff function to use.
  • act (str) – activation function to use in dense layers.
  • fp_scale (bool) – scale the fingerprints according to fp_range.
  • fp_range (list of [min, max]) – the atomic fingerprint range for each SF used to pre-condition the fingerprints.
  • preprocess (bool) – whether to return the preprocessed tensor.
  • use_jacobian (bool) – whether to reconnect the grads of fingerprints. note that one must use the jacobian if one want forces with preprocessing, the option is here mainly for verifying the jacobian implementation.
Returns:

prediction or preprocessed tensor dictionary