Lines: 101 |
Visibility: private
Implementation of input layers for a neural network.
author: Alexander Knoll
Dependencies
Uses
module~~mod_input_layer_with_activations~~UsesGraph
module~mod_input_layer_with_activations
mod_input_layer_with_activations
module~mod_activationfunctions
mod_activationfunctions
module~mod_input_layer_with_activations->module~mod_activationfunctions
module~mod_decorations
mod_decorations
module~mod_input_layer_with_activations->module~mod_decorations
module~mod_global_warning
mod_global_warning
module~mod_input_layer_with_activations->module~mod_global_warning
module~mod_input_layer
mod_input_layer
module~mod_input_layer_with_activations->module~mod_input_layer
module~mod_io
mod_io
module~mod_input_layer_with_activations->module~mod_io
module~mod_precision
mod_precision
module~mod_input_layer_with_activations->module~mod_precision
module~mod_throw
mod_throw
module~mod_input_layer_with_activations->module~mod_throw
module~mod_activationfunctions->module~mod_throw
module~mod_activationfunction_abstract
mod_activationfunction_abstract
module~mod_activationfunctions->module~mod_activationfunction_abstract
module~mod_activationfunction_linear
mod_activationfunction_linear
module~mod_activationfunctions->module~mod_activationfunction_linear
module~mod_activationfunction_relu
mod_activationfunction_relu
module~mod_activationfunctions->module~mod_activationfunction_relu
module~mod_activationfunction_sigmoid
mod_activationfunction_sigmoid
module~mod_activationfunctions->module~mod_activationfunction_sigmoid
module~mod_activationfunction_softplus
mod_activationfunction_softplus
module~mod_activationfunctions->module~mod_activationfunction_softplus
module~mod_activationfunction_square
mod_activationfunction_square
module~mod_activationfunctions->module~mod_activationfunction_square
module~mod_activationfunction_stanh
mod_activationfunction_stanh
module~mod_activationfunctions->module~mod_activationfunction_stanh
module~mod_activationfunction_tanh
mod_activationfunction_tanh
module~mod_activationfunctions->module~mod_activationfunction_tanh
module~mod_decorations->module~mod_io
module~mod_decorations->module~mod_precision
module~mod_decorations->module~mod_throw
module~mod_global_warning->module~mod_io
module~mod_global_warning->module~mod_throw
module~mod_abstract_warning
mod_abstract_warning
module~mod_global_warning->module~mod_abstract_warning
module~mod_input_layer->module~mod_decorations
module~mod_input_layer->module~mod_io
module~mod_input_layer->module~mod_precision
module~mod_input_layer->module~mod_throw
module~mod_constants
mod_constants
module~mod_input_layer->module~mod_constants
module~mod_io->module~mod_precision
iso_fortran_env
iso_fortran_env
module~mod_io->iso_fortran_env
module~mod_optional_args
mod_optional_args
module~mod_io->module~mod_optional_args
iso_c_binding
iso_c_binding
module~mod_precision->iso_c_binding
module~mod_precision->iso_fortran_env
module~mod_throw->module~mod_io
module~mod_throw->module~mod_precision
module~mod_throw->iso_c_binding
module~mod_throw->iso_fortran_env
module~mod_mpi
mod_mpi
module~mod_throw->module~mod_mpi
module~mod_sort
mod_sort
module~mod_throw->module~mod_sort
module~mod_activationfunction_linear->module~mod_precision
module~mod_activationfunction_linear->module~mod_activationfunction_abstract
module~mod_activationfunction_relu->module~mod_precision
module~mod_activationfunction_relu->module~mod_activationfunction_abstract
module~mod_activationfunction_sigmoid->module~mod_precision
module~mod_activationfunction_sigmoid->module~mod_activationfunction_abstract
module~mod_activationfunction_softplus->module~mod_precision
module~mod_activationfunction_softplus->module~mod_activationfunction_abstract
module~mod_activationfunction_square->module~mod_precision
module~mod_activationfunction_square->module~mod_activationfunction_abstract
module~mod_activationfunction_stanh->module~mod_precision
module~mod_activationfunction_stanh->module~mod_activationfunction_abstract
module~mod_activationfunction_tanh->module~mod_precision
module~mod_activationfunction_tanh->module~mod_activationfunction_abstract
module~mod_constants->module~mod_precision
module~mod_constants->iso_c_binding
module~mod_mpi->module~mod_precision
mpi_f08
mpi_f08
module~mod_mpi->mpi_f08
module~mod_sort->module~mod_precision
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Used By
module~~mod_input_layer_with_activations~~UsedByGraph
module~mod_input_layer_with_activations
mod_input_layer_with_activations
module~mod_layers
mod_layers
module~mod_layers->module~mod_input_layer_with_activations
module~mod_neural_network
mod_neural_network
module~mod_neural_network->module~mod_layers
module~mod_hdnn
mod_hdnn
module~mod_hdnn->module~mod_neural_network
module~mod_initialize
mod_initialize
module~mod_initialize->module~mod_hdnn
module~mod_predict_mode
mod_predict_mode
module~mod_predict_mode->module~mod_initialize
module~mod_write_outfiles
mod_write_outfiles
module~mod_predict_mode->module~mod_write_outfiles
module~mod_runner_interface_bindings
mod_runner_interface_bindings
module~mod_runner_interface_bindings->module~mod_initialize
module~mod_train_energy_multiple_structures
mod_train_energy_multiple_structures
module~mod_train_energy_multiple_structures->module~mod_initialize
module~mod_train_forces_multiple_structures
mod_train_forces_multiple_structures
module~mod_train_forces_multiple_structures->module~mod_initialize
module~mod_train_forces_multiple_structures->module~mod_train_energy_multiple_structures
module~mod_train_loop_4g_charges
mod_train_loop_4g_charges
module~mod_train_loop_4g_charges->module~mod_initialize
module~mod_cost_calculator
mod_cost_calculator
module~mod_train_loop_4g_charges->module~mod_cost_calculator
module~mod_output_files_and_cost_4g_charges
mod_output_files_and_cost_4g_charges
module~mod_train_loop_4g_charges->module~mod_output_files_and_cost_4g_charges
module~mod_train_loop_atomic_property
mod_train_loop_atomic_property
module~mod_train_loop_atomic_property->module~mod_initialize
module~mod_train_loop_atomic_property->module~mod_cost_calculator
module~mod_output_files_and_cost
mod_output_files_and_cost
module~mod_train_loop_atomic_property->module~mod_output_files_and_cost
module~mod_train_loop_short_range
mod_train_loop_short_range
module~mod_train_loop_short_range->module~mod_initialize
module~mod_train_loop_short_range->module~mod_train_energy_multiple_structures
module~mod_train_loop_short_range->module~mod_train_forces_multiple_structures
module~mod_train_loop_short_range->module~mod_cost_calculator
module~mod_train_loop_short_range->module~mod_output_files_and_cost
module~mod_output_files_and_cost_4g_short_range
mod_output_files_and_cost_4g_short_range
module~mod_train_loop_short_range->module~mod_output_files_and_cost_4g_short_range
module~mod_train_mode
mod_train_mode
module~mod_train_mode->module~mod_initialize
module~mod_train_mode->module~mod_train_loop_4g_charges
module~mod_train_mode->module~mod_train_loop_atomic_property
module~mod_train_mode->module~mod_train_loop_short_range
module~mod_write_outfiles_training
mod_write_outfiles_training
module~mod_train_mode->module~mod_write_outfiles_training
module~mod_write_outfiles->module~mod_initialize
program~runner
RuNNer
program~runner->module~mod_initialize
program~runner->module~mod_predict_mode
program~runner->module~mod_train_mode
module~mod_lammps_interface
mod_lammps_interface
module~mod_lammps_interface->module~mod_runner_interface_bindings
module~mod_write_outfiles_training->module~mod_write_outfiles
module~mod_cost_calculator->module~mod_write_outfiles_training
module~mod_output_files_and_cost->module~mod_cost_calculator
module~mod_output_files_and_cost_4g_charges->module~mod_cost_calculator
module~mod_output_files_and_cost_4g_short_range->module~mod_cost_calculator
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Derived Types Summary
Procedures Summary
Derived Types Details
An input layer with activations for a feed-forward neural network.
Components
num_nodes :
integer – Inherited from InputLayer
batchsize :
integer – Inherited from InputLayer
x :
real (DP) (dim: (:,:))– The input to this layer, which is stored temporarily to be
reused during a backward pass.
– Inherited from InputLayer
z :
real (DP) (dim: (:,:))– Pre-activations, the node values before application of the
activation function.
– Inherited from InputLayer
a :
real (DP) (dim: (:,:))– Activations, the node values after application of the activation
function. This is the output of the layer.
– Inherited from InputLayer
dz_dq :
real (DP) (dim: (:,:))– Derivatives of the pre-activations with respect to `q`
during forward-mode differentiation.
– Inherited from InputLayer
da_dq :
real (DP) (dim: (:,:))– Derivatives of the activations with respect to `q`
during forward-mode differentiation.
– Inherited from InputLayer
grad :
real (DP) (dim: (:,:))– The gradient passing through the layer during a backward pass.
Usually this is the derivative of the loss function with respect
to the activation of the layer preceeding this one. As there is
no preceeding layer, this is simply the derivative of the loss function
with respect to the input of the network.
– Inherited from InputLayer
dgrad_dq :
real (DP) (dim: (:,:))– Inherited from InputLayer
forward_ptr :
procedure – Pointer for delegating the forward pass to the correct implementation.
We have an OpenMP-parallel and a non-parallel forward pass implementation.
The serial implementation is more efficient for small batchsizes.
We align the pointer whenever reallocate_inputlayer is called,
which is usually only once.
– Inherited from InputLayer
forward_gradient_ptr :
procedure – Pointer for delegating the forward gradient pass. See forward_ptr
for details.
– Inherited from InputLayer
lsaturation_check :
logical
f_act :
type (ActivationFunctionPtr ) (dim: (:))
Type-Bound Procedures
Name
Attributes
Binding
initialize
public
⇒ init_inputlayer
reallocate
public
⇒ reallocate_inputlayer
reset
public
⇒ reset_inputlayer
reset_prediction
public
⇒ reset_prediction_inputlayer
initialize_with_activations
public
⇒ init_inputlayer_act
print
public
⇒ print_inputlayer_act
forward
public
⇒ forward_inputlayer_act
forward_gradient
public
⇒ forward_gradient_inputlayer_act
backward
public
⇒ backward_inputlayer_act
backward_gradient
public
⇒ backward_gradient_inputlayer_act
Inherits
type~~inputlayerwithactivations~~InheritsGraph
type~inputlayerwithactivations
InputLayerWithActivations
type~activationfunctionptr
ActivationFunctionPtr
type~inputlayerwithactivations->type~activationfunctionptr
f_act
type~inputlayer
InputLayer
type~inputlayerwithactivations->type~inputlayer
type~abstractactivationfunction
AbstractActivationFunction
type~activationfunctionptr->type~abstractactivationfunction
ptr
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Procedure Details
subroutine init_inputlayer_act ( & self, & num_nodes, & activation_functions, & lsaturation_check, & batchsize &)
Construct a new InputLayerWithActivations object.
Arguments
self :
class (InputLayerWithActivations ) [inout]– The constructed layer.
num_nodes :
integer [in]– The number of input features, i.e. the size of the layer.
activation_functions :
character (dim: (num_nodes)) [in]– The activation function that will be applied to each single node.
lsaturation_check :
logical [in]
batchsize :
integer [in]– How many samples can pass through the layer concurrently.
Called By
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
subroutine print_inputlayer_act ( & self &)
Print information about an InputLayerWithActivations object.
Arguments
subroutine forward_inputlayer_act ( & self, & x &)
Arguments
subroutine forward_gradient_inputlayer_act ( & self, & x, & dx_dq &)
Arguments
self :
class (InputLayerWithActivations ) [inout]
x :
real (DP) (dim: (self%num_nodes,self%batchsize)) [in]
dx_dq :
real (DP) (dim: (self%num_nodes,self%batchsize)) [in]
subroutine backward_inputlayer_act ( & self, & grad &)
dloss/dx = dloss/da * da/dx = dloss/da * f'(x)
Arguments
self :
class (InputLayerWithActivations ) [inout]
grad :
real (DP) (dim: (self%num_nodes,self%batchsize)) [in]– The gradient passing through the network. This comes from the layer
following this one and is usually `dloss_da`, where `a` are the
activations of this layer.
subroutine backward_gradient_inputlayer_act ( & self, & grad, & dgrad_dq &)
Arguments
self :
class (InputLayerWithActivations ) [inout]
grad :
real (DP) (dim: (self%num_nodes,self%batchsize)) [in]
dgrad_dq :
real (DP) (dim: (self%num_nodes,self%batchsize)) [in]