Skip to content

mod_loss_abstract

Lines: 67 | Visibility: private

Implementation of an abstract base class for all loss functions.

This module provides the foundation for all loss function implementations in RuNNer. It defines the abstract interface that all concrete loss functions must implement, including methods for computing loss values and their derivatives.

The loss functions are designed to work in both serial and parallel (MPI) environments, with optional collection of values across processes.

NOTE: All loss functions should extend AbstractLossFunction and implement the required deferred procedures.

author: Alea Tokita, Alexander Knoll

Dependencies

Uses

module~~mod_loss_abstract~~UsesGraph module~mod_loss_abstract mod_loss_abstract module~mod_mpi mod_mpi module~mod_loss_abstract->module~mod_mpi module~mod_precision mod_precision module~mod_loss_abstract->module~mod_precision module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 iso_c_binding iso_c_binding module~mod_precision->iso_c_binding iso_fortran_env iso_fortran_env module~mod_precision->iso_fortran_env

Used By

module~~mod_loss_abstract~~UsedByGraph module~mod_loss_abstract mod_loss_abstract module~mod_abstractoptimizer mod_abstractoptimizer module~mod_abstractoptimizer->module~mod_loss_abstract module~mod_cost_calculator mod_cost_calculator module~mod_cost_calculator->module~mod_loss_abstract module~mod_cost_epoch mod_cost_epoch module~mod_cost_calculator->module~mod_cost_epoch module~mod_write_outfiles_training mod_write_outfiles_training module~mod_cost_calculator->module~mod_write_outfiles_training module~mod_cost_epoch->module~mod_loss_abstract module~mod_loss_mae mod_loss_mae module~mod_loss_mae->module~mod_loss_abstract module~mod_loss_mse mod_loss_mse module~mod_loss_mse->module~mod_loss_abstract module~mod_loss_mse_torch mod_loss_mse_torch module~mod_loss_mse_torch->module~mod_loss_abstract module~mod_loss_rmse mod_loss_rmse module~mod_loss_rmse->module~mod_loss_abstract module~mod_lossfunctions mod_lossfunctions module~mod_lossfunctions->module~mod_loss_abstract module~mod_lossfunctions->module~mod_loss_mae module~mod_lossfunctions->module~mod_loss_mse module~mod_lossfunctions->module~mod_loss_mse_torch module~mod_lossfunctions->module~mod_loss_rmse 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_loss_abstract 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_loss_abstract 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_loss_abstract module~mod_train_energy_multiple_structures->module~mod_abstractoptimizer module~mod_train_energy_multiple_structures->module~mod_train_helpers module~mod_initialize mod_initialize 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_loss_abstract module~mod_train_forces_multiple_structures->module~mod_abstractoptimizer 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_forces_multiple_structures->module~mod_initialize module~mod_train_helpers->module~mod_loss_abstract 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_loss_abstract module~mod_train_loop_4g_charges->module~mod_abstractoptimizer module~mod_train_loop_4g_charges->module~mod_cost_calculator module~mod_train_loop_4g_charges->module~mod_cost_epoch 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_train_loop_4g_charges->module~mod_initialize 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_signal_handler mod_signal_handler module~mod_train_loop_4g_charges->module~mod_signal_handler module~mod_train_loop_atomic_property mod_train_loop_atomic_property module~mod_train_loop_atomic_property->module~mod_loss_abstract module~mod_train_loop_atomic_property->module~mod_abstractoptimizer module~mod_train_loop_atomic_property->module~mod_cost_calculator module~mod_train_loop_atomic_property->module~mod_cost_epoch 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_initialize 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_atomic_property->module~mod_signal_handler module~mod_train_loop_short_range mod_train_loop_short_range module~mod_train_loop_short_range->module~mod_loss_abstract module~mod_train_loop_short_range->module~mod_abstractoptimizer module~mod_train_loop_short_range->module~mod_cost_calculator module~mod_train_loop_short_range->module~mod_cost_epoch 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_initialize 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_loop_short_range->module~mod_signal_handler module~mod_abstract_kalman_filter mod_abstract_kalman_filter module~mod_abstract_kalman_filter->module~mod_abstractoptimizer module~mod_abstract_kalman_filter->module~mod_loss_mae module~mod_abstract_kalman_filter->module~mod_lossfunctions module~mod_adam mod_adam module~mod_adam->module~mod_abstractoptimizer module~mod_adam->module~mod_loss_mse module~mod_adam->module~mod_lossfunctions module~mod_learning_rate mod_learning_rate module~mod_adam->module~mod_learning_rate module~mod_dataset_statistics_chi_all_chunks mod_dataset_statistics_chi_all_chunks module~mod_dataset_statistics_chi_all_chunks->module~mod_cost_epoch module~mod_dataset_statistics_chi_all_chunks->module~mod_signal_handler module~mod_feature_map_scaling_all_chunks mod_feature_map_scaling_all_chunks module~mod_feature_map_scaling_all_chunks->module~mod_cost_epoch module~mod_feature_map_scaling_all_chunks->module~mod_signal_handler module~mod_gradient_descent mod_gradient_descent module~mod_gradient_descent->module~mod_abstractoptimizer module~mod_gradient_descent->module~mod_loss_mse module~mod_gradient_descent->module~mod_lossfunctions module~mod_gradient_descent->module~mod_learning_rate module~mod_initialize->module~mod_abstractoptimizer module~mod_initialize->module~mod_lossfunctions 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_loss_mse module~mod_nada_opt->module~mod_lossfunctions 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_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 module~mod_stochastic_gradient_descent->module~mod_abstractoptimizer module~mod_stochastic_gradient_descent->module~mod_loss_mse module~mod_stochastic_gradient_descent->module~mod_lossfunctions module~mod_stochastic_gradient_descent->module~mod_learning_rate module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_abstractoptimizer module~mod_train_mode->module~mod_cost_epoch module~mod_train_mode->module~mod_lossfunctions 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_train_mode->module~mod_dataset_statistics_chi_all_chunks module~mod_train_mode->module~mod_feature_map_scaling_all_chunks module~mod_train_mode->module~mod_initialize module~mod_train_test_split mod_train_test_split module~mod_train_mode->module~mod_train_test_split module~mod_train_mode->module~mod_write_outfiles_training module~mod_predict_all_chunks mod_predict_all_chunks module~mod_train_mode->module~mod_predict_all_chunks module~mod_train_test_split->module~mod_cost_epoch module~mod_write_headers->module~mod_abstractoptimizer module~mod_write_outfiles_training->module~mod_cost_epoch module~mod_write_outfiles mod_write_outfiles module~mod_write_outfiles_training->module~mod_write_outfiles program~runner RuNNer program~runner->module~mod_abstractoptimizer program~runner->module~mod_lossfunctions program~runner->module~mod_initialize program~runner->module~mod_train_mode program~runner->module~mod_write_headers module~mod_precompute_features_all_chunks mod_precompute_features_all_chunks program~runner->module~mod_precompute_features_all_chunks 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_global_features_all_chunks mod_precompute_global_features_all_chunks program~runner->module~mod_precompute_global_features_all_chunks module~mod_precompute_features_all_chunks->module~mod_train_test_split module~mod_precompute_features_all_chunks->module~mod_signal_handler module~mod_predict_mode->module~mod_initialize module~mod_predict_mode->module~mod_signal_handler 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_lammps_interface mod_lammps_interface module~mod_lammps_interface->module~mod_runner_interface_bindings module~mod_precompute_global_features_all_chunks->module~mod_signal_handler module~mod_predict_all_chunks->module~mod_signal_handler

Derived Types Summary

Name Description
AbstractLossFunction An abstract base type for all loss functions. @todo Attach regularizer to loss function.
LossFunctionPtr Generic, polymorphic, wrapper-pointer for all loss function objects.

Procedures Summary

Name Type Description
loss_value Function Calculate the loss value, optionally collecting across MPI processes. This is the main entry...

Derived Types Details

type AbstractLossFunction

An abstract base type for all loss functions. @todo Attach regularizer to loss function.

Components

  • name : character– The name of the loss function.
  • collect : logical– Whether to average the value across MPI processes.
  • type : integer– The type of this loss function.

Type-Bound Procedures

Name Attributes Binding
value_child public ⇒ value_child
first_derivative public ⇒ first_derivative
collect_child public ⇒ collect_child
value public ⇒ loss_value

Inherited By

type~~abstractlossfunction~~InheritedByGraph type~abstractlossfunction AbstractLossFunction type~abstractoptimizer AbstractOptimizer type~abstractoptimizer->type~abstractlossfunction loss_function type~lossfunctionptr LossFunctionPtr type~lossfunctionptr->type~abstractlossfunction ptr type~lossmae LossMAE type~lossmae->type~abstractlossfunction type~lossmse LossMSE type~lossmse->type~abstractlossfunction type~lossmsetorch LossMSETorch type~lossmsetorch->type~abstractlossfunction type~lossrmse LossRMSE type~lossrmse->type~abstractlossfunction type~abstractkalmanfilter AbstractKalmanFilter type~abstractkalmanfilter->type~abstractoptimizer type~abstractoptimizerlearningrate AbstractOptimizerLearningRate type~abstractoptimizerlearningrate->type~abstractoptimizer type~costcalculator CostCalculator type~costcalculator->type~lossfunctionptr cost_functions 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 LossFunctionPtr

Generic, polymorphic, wrapper-pointer for all loss function objects.

Components

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

Inherits

type~~lossfunctionptr~~InheritsGraph type~lossfunctionptr LossFunctionPtr type~abstractlossfunction AbstractLossFunction type~lossfunctionptr->type~abstractlossfunction ptr

Inherited By

type~~lossfunctionptr~~InheritedByGraph type~lossfunctionptr LossFunctionPtr type~costcalculator CostCalculator type~costcalculator->type~lossfunctionptr cost_functions

Procedure Details

function loss_value

function loss_value( &
    self, &
    batchsize, &
    prediction, &
    reference &
)

Calculate the loss value, optionally collecting across MPI processes.

This is the main entry point for loss calculation. It handles both local (per-process) and global (MPI-collected) loss computations based on the collect flag in the loss function object.

The function performs the following steps: 1. Calculate local loss using the child-specific value_child method 2. If collect=.false., normalize locally and return 3. If collect=.true., sum across all MPI processes and normalize globally

self - The loss function object batchsize - Number of samples in the local batch prediction - Predicted values for the batch reference - Reference (target) values for the batch Returns: The calculated loss value

Arguments

  • self : class(AbstractLossFunction) [in]– The loss function instance
  • batchsize : integer [in]– Number of samples in batch
  • prediction : real(DP) (dim: (batchsize)) [in]– Predicted values
  • reference : real(DP) (dim: (batchsize)) [in]– Reference values