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
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
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
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses.
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
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
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
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
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
Inherited By
type~~lossfunctionptr~~InheritedByGraph
type~lossfunctionptr
LossFunctionPtr
type~costcalculator
CostCalculator
type~costcalculator->type~lossfunctionptr
cost_functions
Nodes of different colours represent the following:
Graph Key
Type
Type
This Page's Entity
This Page's Entity
Solid arrows point from a derived type to the parent type which it
extends. Dashed arrows point from a derived type to the other
types it contains as a components, with a label listing the name(s) of
said component(s).
Where possible, edges connecting nodes are
given different colours to make them easier to distinguish in
large graphs.
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