Skip to content

mod_abstractoptimizer

Lines: 253 | Visibility: private

Abstract Optimizer Parent Class Definition.

The AbstractOptimizer class defines a generic interface for optimizer components, including: - MPI-driven distributed gradient collection and parameter updates - Customizable update routines for child classes through deferred methods - Integrated support for gradient clipping mechanics

This abstract base class provides the necessary infrastructure to enable diverse optimization techniques, such as stochastic gradient descent (SGD), Adam, and Kalman filter methods, each implementing their logic in specialized subclasses.

author: Knut Nikolas Lausch, Alexander Knoll

Dependencies

Uses

module~~mod_abstractoptimizer~~UsesGraph module~mod_abstractoptimizer mod_abstractoptimizer module~mod_global_warning mod_global_warning module~mod_abstractoptimizer->module~mod_global_warning module~mod_gradient_clipping mod_gradient_clipping module~mod_abstractoptimizer->module~mod_gradient_clipping module~mod_io mod_io module~mod_abstractoptimizer->module~mod_io module~mod_loss_abstract mod_loss_abstract module~mod_abstractoptimizer->module~mod_loss_abstract module~mod_mpi mod_mpi module~mod_abstractoptimizer->module~mod_mpi module~mod_nan_check mod_nan_check module~mod_abstractoptimizer->module~mod_nan_check module~mod_precision mod_precision module~mod_abstractoptimizer->module~mod_precision module~mod_settings mod_settings module~mod_abstractoptimizer->module~mod_settings module~mod_throw mod_throw module~mod_abstractoptimizer->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_gradient_clipping->module~mod_precision module~mod_gradient_clipping->module~mod_settings 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 module~mod_loss_abstract->module~mod_mpi module~mod_loss_abstract->module~mod_precision module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_nan_check->module~mod_io module~mod_nan_check->module~mod_precision module~mod_nan_check->module~mod_throw ieee_arithmetic ieee_arithmetic module~mod_nan_check->ieee_arithmetic iso_c_binding iso_c_binding module~mod_precision->iso_c_binding module~mod_precision->iso_fortran_env module~mod_settings->module~mod_io module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_constants mod_constants module~mod_settings->module~mod_constants module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_periodic_table mod_periodic_table module~mod_settings->module~mod_periodic_table module~mod_throw->module~mod_io module~mod_throw->module~mod_mpi module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_cpu_vendor->iso_c_binding module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_throw module~mod_periodic_table->module~mod_constants module~mod_array_helpers mod_array_helpers module~mod_periodic_table->module~mod_array_helpers module~mod_sort->module~mod_precision module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw

Used By

module~~mod_abstractoptimizer~~UsedByGraph module~mod_abstractoptimizer mod_abstractoptimizer module~mod_abstract_kalman_filter mod_abstract_kalman_filter module~mod_abstract_kalman_filter->module~mod_abstractoptimizer module~mod_adam mod_adam module~mod_adam->module~mod_abstractoptimizer module~mod_learning_rate mod_learning_rate module~mod_adam->module~mod_learning_rate module~mod_gradient_descent mod_gradient_descent module~mod_gradient_descent->module~mod_abstractoptimizer module~mod_gradient_descent->module~mod_learning_rate module~mod_initialize mod_initialize module~mod_initialize->module~mod_abstractoptimizer module~mod_optimizers mod_optimizers module~mod_initialize->module~mod_optimizers module~mod_write_headers mod_write_headers module~mod_initialize->module~mod_write_headers module~mod_kalman_filter mod_kalman_filter module~mod_kalman_filter->module~mod_abstractoptimizer module~mod_kalman_filter->module~mod_abstract_kalman_filter module~mod_kalman_filter_std mod_kalman_filter_std module~mod_kalman_filter_std->module~mod_abstractoptimizer module~mod_kalman_filter_std->module~mod_abstract_kalman_filter module~mod_learning_rate->module~mod_abstractoptimizer module~mod_nada_opt mod_nada_opt module~mod_nada_opt->module~mod_abstractoptimizer module~mod_nada_opt->module~mod_learning_rate module~mod_optimizers->module~mod_abstractoptimizer module~mod_optimizers->module~mod_adam module~mod_optimizers->module~mod_gradient_descent module~mod_optimizers->module~mod_kalman_filter module~mod_optimizers->module~mod_kalman_filter_std module~mod_optimizers->module~mod_nada_opt module~mod_stochastic_gradient_descent mod_stochastic_gradient_descent module~mod_optimizers->module~mod_stochastic_gradient_descent module~mod_stochastic_gradient_descent->module~mod_abstractoptimizer module~mod_stochastic_gradient_descent->module~mod_learning_rate module~mod_train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch module~mod_train_4g_atomic_charges_structure_batch->module~mod_abstractoptimizer module~mod_train_helpers mod_train_helpers module~mod_train_4g_atomic_charges_structure_batch->module~mod_train_helpers module~mod_train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms module~mod_train_atomic_property_multiple_atoms->module~mod_abstractoptimizer module~mod_train_atomic_property_multiple_atoms->module~mod_train_helpers module~mod_train_energy_multiple_structures mod_train_energy_multiple_structures module~mod_train_energy_multiple_structures->module~mod_abstractoptimizer module~mod_train_energy_multiple_structures->module~mod_initialize module~mod_train_energy_multiple_structures->module~mod_train_helpers module~mod_train_forces_multiple_structures mod_train_forces_multiple_structures module~mod_train_forces_multiple_structures->module~mod_abstractoptimizer module~mod_train_forces_multiple_structures->module~mod_initialize module~mod_train_forces_multiple_structures->module~mod_train_energy_multiple_structures module~mod_train_forces_multiple_structures->module~mod_train_helpers module~mod_train_helpers->module~mod_abstractoptimizer module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_loop_4g_charges->module~mod_abstractoptimizer module~mod_train_loop_4g_charges->module~mod_initialize module~mod_train_loop_4g_charges->module~mod_train_4g_atomic_charges_structure_batch module~mod_train_loop_4g_charges->module~mod_train_helpers module~mod_signal_handler mod_signal_handler module~mod_train_loop_4g_charges->module~mod_signal_handler 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_abstractoptimizer module~mod_train_loop_atomic_property->module~mod_initialize module~mod_train_loop_atomic_property->module~mod_train_atomic_property_multiple_atoms module~mod_train_loop_atomic_property->module~mod_train_helpers module~mod_train_loop_atomic_property->module~mod_signal_handler 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_abstractoptimizer 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_train_helpers module~mod_train_loop_short_range->module~mod_signal_handler 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_abstractoptimizer 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_dataset_statistics_chi_all_chunks mod_dataset_statistics_chi_all_chunks module~mod_train_mode->module~mod_dataset_statistics_chi_all_chunks module~mod_feature_map_scaling_all_chunks mod_feature_map_scaling_all_chunks module~mod_train_mode->module~mod_feature_map_scaling_all_chunks module~mod_predict_all_chunks mod_predict_all_chunks module~mod_train_mode->module~mod_predict_all_chunks module~mod_write_outfiles_training mod_write_outfiles_training module~mod_train_mode->module~mod_write_outfiles_training module~mod_write_headers->module~mod_abstractoptimizer program~runner RuNNer program~runner->module~mod_abstractoptimizer program~runner->module~mod_initialize program~runner->module~mod_train_mode program~runner->module~mod_write_headers module~mod_predict_mode mod_predict_mode program~runner->module~mod_predict_mode program~runner->module~mod_signal_handler module~mod_calculate_coulomb_matrix mod_calculate_coulomb_matrix program~runner->module~mod_calculate_coulomb_matrix module~mod_precompute_features_all_chunks mod_precompute_features_all_chunks program~runner->module~mod_precompute_features_all_chunks module~mod_precompute_global_features_all_chunks mod_precompute_global_features_all_chunks program~runner->module~mod_precompute_global_features_all_chunks module~mod_predict_mode->module~mod_initialize module~mod_predict_mode->module~mod_signal_handler 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_signal_handler->module~mod_write_headers module~mod_write_outfiles->module~mod_initialize module~mod_calculate_coulomb_matrix->module~mod_signal_handler module~mod_dataset_statistics_chi_all_chunks->module~mod_signal_handler module~mod_feature_map_scaling_all_chunks->module~mod_signal_handler module~mod_lammps_interface mod_lammps_interface module~mod_lammps_interface->module~mod_runner_interface_bindings module~mod_precompute_features_all_chunks->module~mod_signal_handler module~mod_precompute_global_features_all_chunks->module~mod_signal_handler module~mod_predict_all_chunks->module~mod_signal_handler 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
AbstractOptimizer An abstract parent class for all optimizers. An optimizer is an object that takes a set of...
OptimizerPtr Generic, polymorphic, wrapper-pointer for all optimizer objects.

Procedures Summary

Name Type Description
set_num_parameters_abstractoptimizer Subroutine
update_hyperparameters_abstractoptimizer Subroutine Updates hyperparameters of the bstractOptimizerobjects. Dummy routine that is overwritten...
step_abstractoptimizer_mpi Subroutine Perform one update step using the instance of AbstractOptimizerMPI. This is the main update...
initialize_from_file_abstract_optimizer Subroutine Parse optimizer hyperparameters from a single line of the format `optimizer 1 param1=value1...
weight_decay Subroutine Implementation of different options for weight decay. author: Alea Tokita
parameter_weight_decay Subroutine

Derived Types Details

type AbstractOptimizer

An abstract parent class for all optimizers.

An optimizer is an object that takes a set of optimizable parameters and their gradients and then updates those parameters in the direction of the gradients. The central routine is step and is defined as part of this AbstractOptimizer class. step does two things: 1. Collect the provided parameters and their gradients from all MPI processes. 2. update, i.e. optimize those parameters. This will trigger the specific implementation of the update routine of the actual optimizer being used.

The number of optimizers may be very different from the total number of requested models. For example, users may want to update all models with a single optimizer or, conversely, update each atomic neural network of two HDNNs with separate optimizers. The code allows this kind of experimentation and it is often very useful. The mapping between optimizers and models is accomplished in mod_initialization by calling set_optimizers on the models. Afterwards, each model stores the index of its assigned optimizer(s) (the second dimension of this array). Optimizers do not store the model index.

Components

Type-Bound Procedures

Name Attributes Binding
update public ⇒ update
print public ⇒ print
report public ⇒ report
validate public ⇒ validate
initialize_defaults public ⇒ initialize_defaults
set_hyperparameter public ⇒ set_hyperparameter
weight_decay public ⇒ weight_decay
parameter_weight_decay public ⇒ parameter_weight_decay
initialize_from_file public ⇒ initialize_from_file_abstract_optimizer
step public ⇒ step_abstractoptimizer_mpi
set_num_parameters public ⇒ set_num_parameters_abstractoptimizer
update_hyperparameters public ⇒ update_hyperparameters_abstractoptimizer

Inherits

type~~abstractoptimizer~~InheritsGraph type~abstractoptimizer AbstractOptimizer type~abstractlossfunction AbstractLossFunction type~abstractoptimizer->type~abstractlossfunction loss_function

Inherited By

type~~abstractoptimizer~~InheritedByGraph type~abstractoptimizer AbstractOptimizer type~abstractkalmanfilter AbstractKalmanFilter type~abstractkalmanfilter->type~abstractoptimizer type~abstractoptimizerlearningrate AbstractOptimizerLearningRate type~abstractoptimizerlearningrate->type~abstractoptimizer type~optimizerptr OptimizerPtr type~optimizerptr->type~abstractoptimizer ptr type~adam Adam type~adam->type~abstractoptimizerlearningrate type~gradientdescent GradientDescent type~gradientdescent->type~abstractoptimizerlearningrate type~kalmanfilter KalmanFilter type~kalmanfilter->type~abstractkalmanfilter type~nadaopt NadaOpt type~nadaopt->type~abstractoptimizerlearningrate type~standardkalmanfilter StandardKalmanFilter type~standardkalmanfilter->type~abstractkalmanfilter type~stochasticgradientdescent StochasticGradientDescent type~stochasticgradientdescent->type~abstractoptimizerlearningrate

type OptimizerPtr

Generic, polymorphic, wrapper-pointer for all optimizer objects.

Components

  • ptr : class(AbstractOptimizer)– Raw pointer to an instance of AbstractOptimizer or a child class

Inherits

type~~optimizerptr~~InheritsGraph type~optimizerptr OptimizerPtr type~abstractoptimizer AbstractOptimizer type~optimizerptr->type~abstractoptimizer ptr type~abstractlossfunction AbstractLossFunction type~abstractoptimizer->type~abstractlossfunction loss_function

Procedure Details

subroutine set_num_parameters_abstractoptimizer

subroutine set_num_parameters_abstractoptimizer( &
    self, &
    num_parameters &
)

Arguments

Called By

proc~~set_num_parameters_abstractoptimizer~~CalledByGraph proc~set_num_parameters_abstractoptimizer mod_abstractoptimizer::AbstractOptimizer%set_num_parameters_abstractoptimizer proc~initialize_optimizers_and_loss_functions_from_inputnn mod_initialize::initialize_optimizers_and_loss_functions_from_inputnn proc~initialize_optimizers_and_loss_functions_from_inputnn->proc~set_num_parameters_abstractoptimizer proc~initialize_from_inputnn mod_initialize::initialize_from_inputnn proc~initialize_from_inputnn->proc~initialize_optimizers_and_loss_functions_from_inputnn program~runner RuNNer program~runner->proc~initialize_from_inputnn

subroutine update_hyperparameters_abstractoptimizer

subroutine update_hyperparameters_abstractoptimizer( &
    self, &
    projected_num_updates &
)

Updates hyperparameters of the bstractOptimizerobjects.

Dummy routine that is overwritten by child classes, which need that routine.

Arguments

Called By

proc~~update_hyperparameters_abstractoptimizer~~CalledByGraph proc~update_hyperparameters_abstractoptimizer mod_abstractoptimizer::AbstractOptimizer%update_hyperparameters_abstractoptimizer proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~update_hyperparameters_abstractoptimizer proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~update_hyperparameters_abstractoptimizer proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~update_hyperparameters_abstractoptimizer proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode

subroutine step_abstractoptimizer_mpi

subroutine step_abstractoptimizer_mpi( &
    self, &
    parameters, &
    gradients, &
    loss, &
    update_flag &
)

Perform one update step using the instance of AbstractOptimizerMPI. This is the main update routine that should be called to change the parameters of a model object.

Before the routine is called, the following tasks must be done:

  1. On root MPI process (this_image = 1): Call model%get_parameters().
  2. Determine whether the model will contribute to the update on this MPI process (update_local flag).
  3. If 2., call model%get_gradients_wrt_parameters()

This routine will collect the gradients and loss values from all processes into large arrays that are then passed on to the update routines of the optimizer children. This requires some MPI communication of gradients, loss values, and update flags. After update has terminated, this routine will also broadcast the updated parameters to all MPI processes.

After step has terminated, the following tasks must be done: 1. On all MPI processes, call model%set_parameters(). 5. On all MPI processes, call model%reset().

Arguments

  • self : class(AbstractOptimizer) [inout]
  • parameters : real(DP) (dim: (self%num_parameters)) [inout]– The model parameters on this MPI image. Parameters need only be sent on the root MPI process, all other images are discarded. They should always be identical, anyway.
  • gradients : real(DP) (dim: (self%num_parameters)) [in]– The gradient of each parameter on this MPI image. This information must be sent on each image for which `update_flag` is non-zero.
  • loss : real(DP) [in]– The loss function value.
  • update_flag : integer [in]– Flag whether this image/stream contributes to the update.

Called By

proc~~step_abstractoptimizer_mpi~~CalledByGraph proc~step_abstractoptimizer_mpi mod_abstractoptimizer::AbstractOptimizer%step_abstractoptimizer_mpi proc~update_optimizers_multiple_models mod_train_helpers::update_optimizers_multiple_models proc~update_optimizers_multiple_models->proc~step_abstractoptimizer_mpi proc~update_optimizers_single_model mod_train_helpers::update_optimizers_single_model proc~update_optimizers_single_model->proc~step_abstractoptimizer_mpi interface~update_optimizers mod_train_helpers::update_optimizers interface~update_optimizers->proc~update_optimizers_multiple_models interface~update_optimizers->proc~update_optimizers_single_model proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~update_optimizers proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~update_optimizers proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~update_optimizers proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->interface~update_optimizers proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode

subroutine initialize_from_file_abstract_optimizer

subroutine initialize_from_file_abstract_optimizer( &
    self, &
    line, &
    icomm &
)

Parse optimizer hyperparameters from a single line of the format optimizer 1 param1=value1 param2=value2 loss_function=mae or default_optimizer param1=value1 param2=value2 loss_function=mae where all parameters are optional. If a parameter is not given, the type-specific default will be applied. Child classes need to implement initialize_defaults, set_hyperparameter, and validate.

Arguments

  • self : class(AbstractOptimizer) [inout]
  • line : character [in]
  • icomm : integer [in]– Index of the committee member to which this optimizer is assigned to.

Called By

proc~~initialize_from_file_abstract_optimizer~~CalledByGraph proc~initialize_from_file_abstract_optimizer mod_abstractoptimizer::AbstractOptimizer%initialize_from_file_abstract_optimizer proc~constructor_ptr_from_file_adam mod_adam::constructor_ptr_from_file_adam proc~constructor_ptr_from_file_adam->proc~initialize_from_file_abstract_optimizer proc~constructor_ptr_from_file_gd mod_gradient_descent::constructor_ptr_from_file_gd proc~constructor_ptr_from_file_gd->proc~initialize_from_file_abstract_optimizer proc~constructor_ptr_from_file_kalman mod_kalman_filter::constructor_ptr_from_file_kalman proc~constructor_ptr_from_file_kalman->proc~initialize_from_file_abstract_optimizer proc~constructor_ptr_from_file_kalman_std mod_kalman_filter_std::constructor_ptr_from_file_kalman_std proc~constructor_ptr_from_file_kalman_std->proc~initialize_from_file_abstract_optimizer proc~constructor_ptr_from_file_nada_opt mod_nada_opt::constructor_ptr_from_file_nada_opt proc~constructor_ptr_from_file_nada_opt->proc~initialize_from_file_abstract_optimizer proc~constructor_ptr_from_file_sgd mod_stochastic_gradient_descent::constructor_ptr_from_file_sgd proc~constructor_ptr_from_file_sgd->proc~initialize_from_file_abstract_optimizer interface~adam mod_adam::Adam interface~adam->proc~constructor_ptr_from_file_adam interface~gradientdescent mod_gradient_descent::GradientDescent interface~gradientdescent->proc~constructor_ptr_from_file_gd interface~kalmanfilter mod_kalman_filter::KalmanFilter interface~kalmanfilter->proc~constructor_ptr_from_file_kalman interface~nadaopt mod_nada_opt::NadaOpt interface~nadaopt->proc~constructor_ptr_from_file_nada_opt interface~standardkalmanfilter mod_kalman_filter_std::StandardKalmanFilter interface~standardkalmanfilter->proc~constructor_ptr_from_file_kalman_std interface~stochasticgradientdescent mod_stochastic_gradient_descent::StochasticGradientDescent interface~stochasticgradientdescent->proc~constructor_ptr_from_file_sgd

subroutine weight_decay

subroutine weight_decay( &
    self, &
    losses, &
    parameters, &
    gradients, &
    num_streams &
)

Implementation of different options for weight decay. author: Alea Tokita

Arguments

  • self : class(AbstractOptimizer) [inout]
  • losses : real(DP) (dim: (:)) [inout]
  • parameters : real(DP) (dim: (:)) [inout]
  • gradients : real(DP) (dim: (:,:)) [inout]
  • num_streams : integer [in]

Called By

proc~~weight_decay~~CalledByGraph proc~weight_decay mod_abstractoptimizer::AbstractOptimizer%weight_decay proc~step_abstractoptimizer_mpi mod_abstractoptimizer::AbstractOptimizer%step_abstractoptimizer_mpi proc~step_abstractoptimizer_mpi->proc~weight_decay proc~update_optimizers_multiple_models mod_train_helpers::update_optimizers_multiple_models proc~update_optimizers_multiple_models->proc~step_abstractoptimizer_mpi proc~update_optimizers_single_model mod_train_helpers::update_optimizers_single_model proc~update_optimizers_single_model->proc~step_abstractoptimizer_mpi interface~update_optimizers mod_train_helpers::update_optimizers interface~update_optimizers->proc~update_optimizers_multiple_models interface~update_optimizers->proc~update_optimizers_single_model proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~update_optimizers proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~update_optimizers proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~update_optimizers proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->interface~update_optimizers proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode

subroutine parameter_weight_decay

subroutine parameter_weight_decay( &
    self, &
    wd, &
    parameters &
)

Arguments

  • self : class(AbstractOptimizer) [inout]
  • wd : real(DP) [in]
  • parameters : real(DP) (dim: (:)) [inout]

Called By

proc~~parameter_weight_decay~~CalledByGraph proc~parameter_weight_decay mod_abstractoptimizer::AbstractOptimizer%parameter_weight_decay proc~weight_decay mod_abstractoptimizer::AbstractOptimizer%weight_decay proc~weight_decay->proc~parameter_weight_decay proc~step_abstractoptimizer_mpi mod_abstractoptimizer::AbstractOptimizer%step_abstractoptimizer_mpi proc~step_abstractoptimizer_mpi->proc~weight_decay proc~update_optimizers_multiple_models mod_train_helpers::update_optimizers_multiple_models proc~update_optimizers_multiple_models->proc~step_abstractoptimizer_mpi proc~update_optimizers_single_model mod_train_helpers::update_optimizers_single_model proc~update_optimizers_single_model->proc~step_abstractoptimizer_mpi interface~update_optimizers mod_train_helpers::update_optimizers interface~update_optimizers->proc~update_optimizers_multiple_models interface~update_optimizers->proc~update_optimizers_single_model proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch proc~train_4g_atomic_charges_structure_batch->interface~update_optimizers proc~train_atomic_property_multiple_atoms mod_train_atomic_property_multiple_atoms::train_atomic_property_multiple_atoms proc~train_atomic_property_multiple_atoms->interface~update_optimizers proc~train_energy_multiple_structures mod_train_energy_multiple_structures::train_energy_multiple_structures proc~train_energy_multiple_structures->interface~update_optimizers proc~train_forces_multiple_structures mod_train_forces_multiple_structures::train_forces_multiple_structures proc~train_forces_multiple_structures->interface~update_optimizers proc~train_forces_multiple_structures->proc~train_energy_multiple_structures proc~train_loop_4g_charges mod_train_loop_4g_charges::train_loop_4g_charges proc~train_loop_4g_charges->proc~train_4g_atomic_charges_structure_batch proc~train_loop_atomic_property mod_train_loop_atomic_property::train_loop_atomic_property proc~train_loop_atomic_property->proc~train_atomic_property_multiple_atoms proc~train_loop_short_range mod_train_loop_short_range::train_loop_short_range proc~train_loop_short_range->proc~train_energy_multiple_structures proc~train_loop_short_range->proc~train_forces_multiple_structures proc~train_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges proc~train_mode->proc~train_loop_atomic_property proc~train_mode->proc~train_loop_short_range program~runner RuNNer program~runner->proc~train_mode