Skip to content

mod_input_layer_with_activations

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

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

Derived Types Summary

Name Description
InputLayerWithActivations An input layer with activations for a feed-forward neural network.

Procedures Summary

Name Type Description
init_inputlayer_act Subroutine Construct a new InputLayerWithActivations object.
print_inputlayer_act Subroutine Print information about an InputLayerWithActivations object.
forward_inputlayer_act Subroutine
forward_gradient_inputlayer_act Subroutine
backward_inputlayer_act Subroutine dloss/dx = dloss/da * da/dx = dloss/da * f'(x)
backward_gradient_inputlayer_act Subroutine

Derived Types Details

type InputLayerWithActivations

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

Procedure Details

subroutine init_inputlayer_act

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

proc~~init_inputlayer_act~~CalledByGraph proc~init_inputlayer_act mod_input_layer_with_activations::InputLayerWithActivations%init_inputlayer_act proc~initialize_nn_from_architecture mod_neural_network::NeuralNetwork%initialize_nn_from_architecture proc~initialize_nn_from_architecture->proc~init_inputlayer_act none~initialize mod_neural_network::NeuralNetwork%initialize none~initialize->proc~initialize_nn_from_architecture proc~initialize_from_architecture mod_hdnn::HDNN%initialize_from_architecture proc~initialize_from_architecture->none~initialize proc~initialize_from_file_hdnn mod_hdnn::HDNN%initialize_from_file_hdnn proc~initialize_from_file_hdnn->proc~initialize_from_architecture

subroutine print_inputlayer_act

subroutine print_inputlayer_act( &
    self &
)

Print information about an InputLayerWithActivations object.

Arguments


subroutine forward_inputlayer_act

subroutine forward_inputlayer_act( &
    self, &
    x &
)

Arguments


subroutine forward_gradient_inputlayer_act

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

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

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]