Skip to content

mod_gradient_clipping

Lines: 23 | Visibility: private

Adjust gradients to respect hard upper or lower boundaries. author: Alea Tokita, Moritz R. Schaefer

Dependencies

Uses

module~~mod_gradient_clipping~~UsesGraph module~mod_gradient_clipping mod_gradient_clipping module~mod_precision mod_precision module~mod_gradient_clipping->module~mod_precision module~mod_settings mod_settings module~mod_gradient_clipping->module~mod_settings iso_c_binding iso_c_binding module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env module~mod_settings->module~mod_precision 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_io mod_io module~mod_settings->module~mod_io module~mod_periodic_table mod_periodic_table module~mod_settings->module~mod_periodic_table module~mod_throw mod_throw module~mod_settings->module~mod_throw module~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_cpu_vendor->iso_c_binding module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_optional_args mod_optional_args module~mod_io->module~mod_optional_args module~mod_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_constants module~mod_periodic_table->module~mod_io module~mod_periodic_table->module~mod_throw module~mod_array_helpers mod_array_helpers module~mod_periodic_table->module~mod_array_helpers module~mod_throw->module~mod_precision module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_throw->module~mod_io module~mod_mpi mod_mpi module~mod_throw->module~mod_mpi module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw 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_gradient_clipping~~UsedByGraph module~mod_gradient_clipping mod_gradient_clipping module~mod_abstractoptimizer mod_abstractoptimizer module~mod_abstractoptimizer->module~mod_gradient_clipping 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

Procedures Summary

Name Type Description
gradient_clipping Subroutine Gradient clipping. This subroutine applies gradient clipping to ensure gradient vectors remain...

Procedure Details

subroutine gradient_clipping

subroutine gradient_clipping( &
    gradients, &
    num_parameters &
)

Gradient clipping.

This subroutine applies gradient clipping to ensure gradient vectors remain within prescribed boundaries during optimization. Clipping can be performed by value or by norm: - Value Clipping restricts each gradient component within user-defined upper and lower limits. - Norm Clipping ensures the overall vector norm does not exceed a specified threshold.

Gradient clipping stabilizes training by preventing extreme parameter updates associated with large or aberrant gradients, thereby enhancing convergence properties.

The boundaries for clipping are globally configured using global_settings attributes.

Arguments: - gradients: Gradient vector to be modified - num_parameters: The length of the gradient vector

@note Clipping operations are in-place and affect the input gradient array directly.

Arguments

  • gradients : real(DP) (dim: (num_parameters)) [inout]
  • num_parameters : integer [in]

Called By

proc~~gradient_clipping~~CalledByGraph proc~gradient_clipping mod_gradient_clipping::gradient_clipping proc~step_abstractoptimizer_mpi mod_abstractoptimizer::AbstractOptimizer%step_abstractoptimizer_mpi proc~step_abstractoptimizer_mpi->proc~gradient_clipping 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