This is part of the annfunc module | |
It is only available if you configure PLUMED with ./configure –enable-modules=annfunc . Furthermore, this feature is still being developed so take care when using it and report any problems on the mailing list. |
Calculates the ANN-function.
This module implements ANN class, which is a subclass of Function class. ANN class takes multi-dimensional arrays as inputs for a fully-connected feedforward neural network with specified neural network weights and generates corresponding outputs. The ANN outputs can be used as collective variables, inputs for other collective variables, or inputs for data analysis tools.
Assume we have an ANN with numbers of nodes being [2, 3, 1], and weights connecting layer 0 and 1 are
[[1,2], [3,4], [5,6]]
weights connecting layer 1 and 2 are
[[7,8,9]]
Bias for layer 1 and 2 are [10, 11, 12] and [13], respectively.
All activation functions are Tanh.
Then if input variables are l_0_out_0, l_0_out_1, the corresponding ANN function object can be defined using following plumed script:
ann: ANN ...ARG=l_0_out_0,l_0_out_1the input for this action is the scalar output from one or more other actions.NUM_LAYERS=3compulsory keyword number of layers of the neural networkNUM_NODES=2,3,1compulsory keyword numbers of nodes in each layer of the neural networkACTIVATIONS=Tanh,Tanhcompulsory keyword activation functions for the neural networkWEIGHTS0=1,2,3,4,5,6flattened weight arrays connecting adjacent layers, WEIGHTS0 represents flattened weight array connecting layer 0 and layer 1, WEIGHTS1 represents flattened weight array connecting layer 1 and layer 2, ...WEIGHTS1=7,8,9flattened weight arrays connecting adjacent layers, WEIGHTS0 represents flattened weight array connecting layer 0 and layer 1, WEIGHTS1 represents flattened weight array connecting layer 1 and layer 2, ...BIASES0=10,11,12bias array for each layer of the neural network, BIASES0 represents bias array for layer 1, BIASES1 represents bias array for layer 2, ...BIASES1=13 ...bias array for each layer of the neural network, BIASES0 represents bias array for layer 1, BIASES1 represents bias array for layer 2, ...
To access its components, we use "ann.node-0", "ann.node-1", ..., which represents the components of neural network outputs.
By default the value of the calculated quantity can be referenced elsewhere in the input file by using the label of the action. Alternatively this Action can be used to calculate the following quantities by employing the keywords listed below. These quantities can be referenced elsewhere in the input by using this Action's label followed by a dot and the name of the quantity required from the list below.
Quantity | Description |
node | components of ANN outputs |
PERIODIC | if the output of your function is periodic then you should specify the periodicity of the function. If the output is not periodic you must state this using PERIODIC=NO |
NUM_LAYERS | number of layers of the neural network |
NUM_NODES | numbers of nodes in each layer of the neural network |
ACTIVATIONS | activation functions for the neural network |
NUMERICAL_DERIVATIVES | ( default=off ) calculate the derivatives for these quantities numerically |
ARG | the input for this action is the scalar output from one or more other actions. The particular scalars that you will use are referenced using the label of the action. If the label appears on its own then it is assumed that the Action calculates a single scalar value. The value of this scalar is thus used as the input to this new action. If * or *.* appears the scalars calculated by all the proceeding actions in the input file are taken. Some actions have multi-component outputs and each component of the output has a specific label. For example a DISTANCE action labelled dist may have three components x, y and z. To take just the x component you should use dist.x, if you wish to take all three components then use dist.*.More information on the referencing of Actions can be found in the section of the manual on the PLUMED Getting Started. Scalar values can also be referenced using POSIX regular expressions as detailed in the section on Regular Expressions. To use this feature you you must compile PLUMED with the appropriate flag. You can use multiple instances of this keyword i.e. ARG1, ARG2, ARG3... |
WEIGHTS | flattened weight arrays connecting adjacent layers, WEIGHTS0 represents flattened weight array connecting layer 0 and layer 1, WEIGHTS1 represents flattened weight array connecting layer 1 and layer 2, ... You can use multiple instances of this keyword i.e. WEIGHTS1, WEIGHTS2, WEIGHTS3... |
BIASES | bias array for each layer of the neural network, BIASES0 represents bias array for layer 1, BIASES1 represents bias array for layer 2, ... You can use multiple instances of this keyword i.e. BIASES1, BIASES2, BIASES3... |