A model has two parts, a descriptor that maps atomic configuration to a set of symmetry invariant features, and a fitting net that takes descriptor as input and predicts the atomic contribution to the target physical property. It's defined in the {ref}model <model>
section of the input.json
, for example,
"model": {
"type_map": ["O", "H"],
"descriptor" :{
"...": "..."
},
"fitting_net" : {
"...": "..."
}
}
The two subsections, {ref}descriptor <model/descriptor>
and {ref}fitting_net <model/fitting_net>
, define the descriptor and the fitting net, respectively.
The {ref}type_map <model/type_map>
is optional, which provides the element names (but not necessarily same with the actual name of the element) of the corresponding atom types. A model for water, as in this example, has two kinds of atoms. The atom types are internally recorded as integers, e.g., 0
for oxygen and 1
for hydrogen here. A mapping from the atom type to their names is provided by {ref}type_map <model/type_map>
.
DeePMD-kit implements the following descriptors:
se_e2_a
: DeepPot-SE constructed from all information (both angular and radial) of atomic configurations. The embedding takes the distance between atoms as input.se_e2_r
: DeepPot-SE constructed from radial information of atomic configurations. The embedding takes the distance between atoms as input.se_e3
: DeepPot-SE constructed from all information (both angular and radial) of atomic configurations. The embedding takes angles between two neighboring atoms as input.loc_frame
: Defines a local frame at each atom, and the compute the descriptor as local coordinates under this frame.hybrid
: Concate a list of descriptors to form a new descriptor.
The fitting of the following physical properties are supported