Skip to content

mod_lossfunctions

Lines: 54 | Visibility: private

Convenience module for loading all loss functions.

This module provides a centralized factory interface for creating and accessing different types of loss functions used in RuNNer. It serves as a registry and factory for all available loss function implementations.

Available loss functions: - Mean Absolute Error (MAE) - L1 loss, robust to outliers - Mean Squared Error (MSE) - L2 loss, commonly used for regression - Root Mean Squared Error (RMSE) - Square root of MSE

Usage example:

type(LossFunctionPtr) :: my_loss
my_loss = get_loss_function(MAE_IDX, collect=.true.)

author: Alea Tokita, Alexander Knoll

Dependencies

Uses

module~~mod_lossfunctions~~UsesGraph module~mod_lossfunctions mod_lossfunctions module~mod_io mod_io module~mod_lossfunctions->module~mod_io module~mod_loss_abstract mod_loss_abstract module~mod_lossfunctions->module~mod_loss_abstract module~mod_loss_mae mod_loss_mae module~mod_lossfunctions->module~mod_loss_mae module~mod_loss_mse mod_loss_mse module~mod_lossfunctions->module~mod_loss_mse module~mod_loss_mse_torch mod_loss_mse_torch module~mod_lossfunctions->module~mod_loss_mse_torch module~mod_loss_rmse mod_loss_rmse module~mod_lossfunctions->module~mod_loss_rmse module~mod_throw mod_throw module~mod_lossfunctions->module~mod_throw 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_precision mod_precision module~mod_io->module~mod_precision module~mod_mpi mod_mpi module~mod_loss_abstract->module~mod_mpi module~mod_loss_abstract->module~mod_precision module~mod_loss_mae->module~mod_loss_abstract module~mod_loss_mae->module~mod_precision module~mod_loss_mse->module~mod_loss_abstract module~mod_loss_mse->module~mod_precision module~mod_loss_mse_torch->module~mod_loss_abstract module~mod_loss_mse_torch->module~mod_precision module~mod_loss_rmse->module~mod_loss_abstract module~mod_loss_rmse->module~mod_precision module~mod_throw->module~mod_io iso_c_binding iso_c_binding module~mod_throw->iso_c_binding module~mod_throw->iso_fortran_env module~mod_throw->module~mod_mpi module~mod_throw->module~mod_precision module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_mpi->module~mod_precision mpi_f08 mpi_f08 module~mod_mpi->mpi_f08 module~mod_precision->iso_c_binding module~mod_precision->iso_fortran_env module~mod_sort->module~mod_precision

Used By

module~~mod_lossfunctions~~UsedByGraph module~mod_lossfunctions mod_lossfunctions module~mod_abstract_kalman_filter mod_abstract_kalman_filter module~mod_abstract_kalman_filter->module~mod_lossfunctions module~mod_adam mod_adam module~mod_adam->module~mod_lossfunctions module~mod_gradient_descent mod_gradient_descent module~mod_gradient_descent->module~mod_lossfunctions module~mod_initialize mod_initialize module~mod_initialize->module~mod_lossfunctions module~mod_optimizers mod_optimizers module~mod_initialize->module~mod_optimizers module~mod_nada_opt mod_nada_opt module~mod_nada_opt->module~mod_lossfunctions module~mod_stochastic_gradient_descent mod_stochastic_gradient_descent module~mod_stochastic_gradient_descent->module~mod_lossfunctions module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_lossfunctions module~mod_train_mode->module~mod_initialize module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_mode->module~mod_train_loop_4g_charges module~mod_train_loop_atomic_property mod_train_loop_atomic_property module~mod_train_mode->module~mod_train_loop_atomic_property module~mod_train_loop_short_range mod_train_loop_short_range 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 program~runner RuNNer program~runner->module~mod_lossfunctions program~runner->module~mod_initialize program~runner->module~mod_train_mode module~mod_predict_mode mod_predict_mode program~runner->module~mod_predict_mode module~mod_kalman_filter mod_kalman_filter 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_abstract_kalman_filter module~mod_optimizers->module~mod_adam module~mod_optimizers->module~mod_gradient_descent module~mod_optimizers->module~mod_nada_opt module~mod_optimizers->module~mod_stochastic_gradient_descent module~mod_optimizers->module~mod_kalman_filter module~mod_optimizers->module~mod_kalman_filter_std 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->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->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->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_write_outfiles->module~mod_initialize 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

Procedures Summary

Name Type Description
get_loss_function Function Factory function to create loss function objects by index. Creates and returns a polymorphic...
get_loss_function_idx Function Convert loss function name string to numeric index. This function maps loss function names (as...

Procedure Details

function get_loss_function

function get_loss_function( &
    loss_function_index, &
    collect &
)

Factory function to create loss function objects by index.

Creates and returns a polymorphic pointer to the requested loss function type. The function acts as a factory, instantiating the appropriate concrete loss function based on the provided index.

loss_function_index - Numeric identifier for the loss function type collect - Whether to collect/average values across MPI processes Returns: Polymorphic pointer to the created loss function

Arguments

  • loss_function_index : integer [in]– Loss function type identifier
  • collect : logical [in]– Whether to average across MPI processes

Called By

proc~~get_loss_function~~CalledByGraph proc~get_loss_function mod_lossfunctions::get_loss_function 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~get_loss_function proc~parse_cost_functions mod_initialize::parse_cost_functions proc~parse_cost_functions->proc~get_loss_function proc~initialize_from_inputnn mod_initialize::initialize_from_inputnn proc~initialize_from_inputnn->proc~initialize_optimizers_and_loss_functions_from_inputnn proc~initialize_from_inputnn->proc~parse_cost_functions program~runner RuNNer program~runner->proc~initialize_from_inputnn

function get_loss_function_idx

function get_loss_function_idx( &
    name &
)

Convert loss function name string to numeric index.

This function maps loss function names (as strings) to their corresponding numeric identifiers. It's typically used when parsing input files that specify loss functions by name.

Supported names (case-insensitive): - 'mae' : MAE_IDX (Mean Absolute Error) - 'mse' : MSE_IDX (Mean Squared Error) - 'mse_torch': MSE_TORCH_IDX (MSE without factor of 0.5). - 'rmse' : RMSE_IDX (Root Mean Squared Error)

name : String name of the loss function Returns: Numeric index corresponding to the loss function

Arguments

  • name : character [in]– Loss function name string

Called By

proc~~get_loss_function_idx~~CalledByGraph proc~get_loss_function_idx mod_lossfunctions::get_loss_function_idx proc~parse_cost_functions mod_initialize::parse_cost_functions proc~parse_cost_functions->proc~get_loss_function_idx proc~set_hyperparameter_adam mod_adam::Adam%set_hyperparameter_adam proc~set_hyperparameter_adam->proc~get_loss_function_idx proc~set_hyperparameter_gd mod_gradient_descent::GradientDescent%set_hyperparameter_gd proc~set_hyperparameter_gd->proc~get_loss_function_idx proc~set_hyperparameter_kalman_parent mod_abstract_kalman_filter::AbstractKalmanFilter%set_hyperparameter_kalman_parent proc~set_hyperparameter_kalman_parent->proc~get_loss_function_idx proc~set_hyperparameter_nada_opt mod_nada_opt::NadaOpt%set_hyperparameter_nada_opt proc~set_hyperparameter_nada_opt->proc~get_loss_function_idx proc~set_hyperparameter_sgd mod_stochastic_gradient_descent::StochasticGradientDescent%set_hyperparameter_sgd proc~set_hyperparameter_sgd->proc~get_loss_function_idx proc~initialize_from_inputnn mod_initialize::initialize_from_inputnn proc~initialize_from_inputnn->proc~parse_cost_functions program~runner RuNNer program~runner->proc~initialize_from_inputnn