Skip to content

mod_train_4g_atomic_charges_structure_batch

Lines: 212 | Visibility: private

Routines for training 4G atomic charges. author: Alexander Knoll

Dependencies

Uses

module~~mod_train_4g_atomic_charges_structure_batch~~UsesGraph module~mod_train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch module~mod_abstract_property_model mod_abstract_property_model module~mod_train_4g_atomic_charges_structure_batch->module~mod_abstract_property_model module~mod_abstractoptimizer mod_abstractoptimizer module~mod_train_4g_atomic_charges_structure_batch->module~mod_abstractoptimizer module~mod_create_batches mod_create_batches module~mod_train_4g_atomic_charges_structure_batch->module~mod_create_batches module~mod_data_container mod_data_container module~mod_train_4g_atomic_charges_structure_batch->module~mod_data_container module~mod_dataloader_file mod_dataloader_file module~mod_train_4g_atomic_charges_structure_batch->module~mod_dataloader_file module~mod_feature_calculator mod_feature_calculator module~mod_train_4g_atomic_charges_structure_batch->module~mod_feature_calculator module~mod_forward_backward_batched mod_forward_backward_batched module~mod_train_4g_atomic_charges_structure_batch->module~mod_forward_backward_batched module~mod_forward_batched mod_forward_batched module~mod_train_4g_atomic_charges_structure_batch->module~mod_forward_batched module~mod_get_max_num_output_properties mod_get_max_num_output_properties module~mod_train_4g_atomic_charges_structure_batch->module~mod_get_max_num_output_properties module~mod_loss_abstract mod_loss_abstract module~mod_train_4g_atomic_charges_structure_batch->module~mod_loss_abstract module~mod_mpi mod_mpi module~mod_train_4g_atomic_charges_structure_batch->module~mod_mpi module~mod_periodic_table mod_periodic_table module~mod_train_4g_atomic_charges_structure_batch->module~mod_periodic_table module~mod_precision mod_precision module~mod_train_4g_atomic_charges_structure_batch->module~mod_precision module~mod_settings mod_settings module~mod_train_4g_atomic_charges_structure_batch->module~mod_settings module~mod_throw mod_throw module~mod_train_4g_atomic_charges_structure_batch->module~mod_throw module~mod_timer mod_timer module~mod_train_4g_atomic_charges_structure_batch->module~mod_timer module~mod_train_helpers mod_train_helpers module~mod_train_4g_atomic_charges_structure_batch->module~mod_train_helpers module~mod_training_charge_equilibration mod_training_charge_equilibration module~mod_train_4g_atomic_charges_structure_batch->module~mod_training_charge_equilibration module~mod_abstract_property_model->module~mod_precision module~mod_abstract_property_model->module~mod_settings module~mod_abstract_property_model->module~mod_throw module~mod_array_helpers mod_array_helpers module~mod_abstract_property_model->module~mod_array_helpers module~mod_initialize_array mod_initialize_array module~mod_abstract_property_model->module~mod_initialize_array module~mod_io mod_io module~mod_abstract_property_model->module~mod_io module~mod_random mod_random module~mod_abstract_property_model->module~mod_random module~mod_abstractoptimizer->module~mod_loss_abstract module~mod_abstractoptimizer->module~mod_mpi module~mod_abstractoptimizer->module~mod_precision module~mod_abstractoptimizer->module~mod_settings module~mod_abstractoptimizer->module~mod_throw 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_abstractoptimizer->module~mod_io module~mod_nan_check mod_nan_check module~mod_abstractoptimizer->module~mod_nan_check module~mod_create_batches->module~mod_mpi module~mod_create_batches->module~mod_periodic_table module~mod_create_batches->module~mod_precision module~mod_databatcher mod_databatcher module~mod_create_batches->module~mod_databatcher module~mod_data_container->module~mod_precision module~mod_data_container->module~mod_throw module~mod_data_container->module~mod_io module~mod_dataloader_file->module~mod_feature_calculator module~mod_dataloader_file->module~mod_mpi module~mod_dataloader_file->module~mod_periodic_table module~mod_dataloader_file->module~mod_precision module~mod_dataloader_file->module~mod_throw module~mod_abstract_structure_data_file mod_abstract_structure_data_file module~mod_dataloader_file->module~mod_abstract_structure_data_file module~mod_cutoff_function mod_cutoff_function module~mod_dataloader_file->module~mod_cutoff_function module~mod_dataloader_file->module~mod_databatcher module~mod_feature_map_neighborlist mod_feature_map_neighborlist module~mod_dataloader_file->module~mod_feature_map_neighborlist module~mod_dataloader_file->module~mod_io module~mod_memory_estimation mod_memory_estimation module~mod_dataloader_file->module~mod_memory_estimation module~mod_optional_args mod_optional_args module~mod_dataloader_file->module~mod_optional_args module~mod_split_and_assign mod_split_and_assign module~mod_dataloader_file->module~mod_split_and_assign module~mod_structures mod_structures module~mod_dataloader_file->module~mod_structures module~mod_feature_calculator->module~mod_data_container module~mod_feature_calculator->module~mod_mpi module~mod_feature_calculator->module~mod_periodic_table module~mod_feature_calculator->module~mod_precision module~mod_feature_calculator->module~mod_settings module~mod_feature_calculator->module~mod_throw module~mod_feature_calculator->module~mod_timer module~mod_angular_symmetry_function_3 mod_angular_symmetry_function_3 module~mod_feature_calculator->module~mod_angular_symmetry_function_3 module~mod_angular_symmetry_function_8 mod_angular_symmetry_function_8 module~mod_feature_calculator->module~mod_angular_symmetry_function_8 module~mod_angular_symmetry_function_9 mod_angular_symmetry_function_9 module~mod_feature_calculator->module~mod_angular_symmetry_function_9 module~mod_feature_calculator->module~mod_array_helpers module~mod_atomic_descriptor mod_atomic_descriptor module~mod_feature_calculator->module~mod_atomic_descriptor module~mod_feature_calculator->module~mod_cutoff_function module~mod_element mod_element module~mod_feature_calculator->module~mod_element module~mod_extrapolation_warning mod_extrapolation_warning module~mod_feature_calculator->module~mod_extrapolation_warning module~mod_feature_map mod_feature_map module~mod_feature_calculator->module~mod_feature_map module~mod_feature_calculator->module~mod_feature_map_neighborlist module~mod_feature_calculator->module~mod_io module~mod_feature_calculator->module~mod_optional_args module~mod_overlap_matrix mod_overlap_matrix module~mod_feature_calculator->module~mod_overlap_matrix module~mod_path mod_path module~mod_feature_calculator->module~mod_path module~mod_radial_symmetry_function_1 mod_radial_symmetry_function_1 module~mod_feature_calculator->module~mod_radial_symmetry_function_1 module~mod_radial_symmetry_function_2 mod_radial_symmetry_function_2 module~mod_feature_calculator->module~mod_radial_symmetry_function_2 module~mod_set_integer mod_set_integer module~mod_feature_calculator->module~mod_set_integer module~mod_feature_calculator->module~mod_structures module~mod_forward_backward_batched->module~mod_abstract_property_model module~mod_forward_backward_batched->module~mod_mpi module~mod_forward_backward_batched->module~mod_periodic_table module~mod_forward_backward_batched->module~mod_precision module~mod_forward_backward_batched->module~mod_throw module~mod_forward_backward_batched->module~mod_databatcher module~mod_forward_batched->module~mod_abstract_property_model module~mod_forward_batched->module~mod_mpi module~mod_forward_batched->module~mod_periodic_table module~mod_forward_batched->module~mod_precision module~mod_forward_batched->module~mod_throw module~mod_forward_batched->module~mod_databatcher module~mod_get_max_num_output_properties->module~mod_abstract_property_model module~mod_get_max_num_output_properties->module~mod_mpi 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_periodic_table->module~mod_precision module~mod_periodic_table->module~mod_throw module~mod_periodic_table->module~mod_array_helpers module~mod_constants mod_constants module~mod_periodic_table->module~mod_constants module~mod_periodic_table->module~mod_io 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_periodic_table module~mod_settings->module~mod_precision module~mod_settings->module~mod_throw module~mod_settings->module~mod_constants module~mod_cpu_vendor mod_cpu_vendor module~mod_settings->module~mod_cpu_vendor module~mod_settings->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_throw->module~mod_io module~mod_sort mod_sort module~mod_throw->module~mod_sort module~mod_timer->module~mod_precision module~mod_timer->module~mod_throw ieee_arithmetic ieee_arithmetic module~mod_timer->ieee_arithmetic module~mod_timer->module~mod_io module~mod_timer->module~mod_optional_args module~mod_train_helpers->module~mod_abstract_property_model module~mod_train_helpers->module~mod_abstractoptimizer module~mod_train_helpers->module~mod_loss_abstract module~mod_train_helpers->module~mod_mpi module~mod_train_helpers->module~mod_periodic_table module~mod_train_helpers->module~mod_precision module~mod_train_helpers->module~mod_settings module~mod_train_helpers->module~mod_throw module~mod_decorations mod_decorations module~mod_train_helpers->module~mod_decorations module~mod_train_helpers->module~mod_global_warning module~mod_train_helpers->module~mod_io module~mod_training_charge_equilibration->module~mod_data_container module~mod_training_charge_equilibration->module~mod_precision module~mod_abstract_electrostatics mod_abstract_electrostatics module~mod_training_charge_equilibration->module~mod_abstract_electrostatics module~mod_cross_matrix mod_cross_matrix module~mod_training_charge_equilibration->module~mod_cross_matrix module~mod_ewald_summation mod_ewald_summation module~mod_training_charge_equilibration->module~mod_ewald_summation module~mod_linalg mod_linalg module~mod_training_charge_equilibration->module~mod_linalg module~mod_training_charge_equilibration->module~mod_optional_args module~mod_pair_electrostatics mod_pair_electrostatics module~mod_training_charge_equilibration->module~mod_pair_electrostatics module~mod_training_charge_equilibration->module~mod_structures module~mod_abstract_electrostatics->module~mod_precision module~mod_abstract_electrostatics->module~mod_structures module~mod_abstract_structure_data_file->module~mod_mpi module~mod_abstract_structure_data_file->module~mod_periodic_table module~mod_abstract_structure_data_file->module~mod_structures module~mod_dataset_storage mod_dataset_storage module~mod_abstract_structure_data_file->module~mod_dataset_storage module~mod_genericfile mod_genericfile module~mod_abstract_structure_data_file->module~mod_genericfile module~mod_angular_symmetry_function_3->module~mod_periodic_table module~mod_angular_symmetry_function_3->module~mod_precision module~mod_angular_symmetry_function_3->module~mod_throw module~mod_angular_symmetry_function_3->module~mod_constants module~mod_angular_symmetry_function_3->module~mod_cutoff_function module~mod_angular_symmetry_function_3->module~mod_feature_map module~mod_angular_symmetry_function_3->module~mod_feature_map_neighborlist module~mod_angular_symmetry_function_3->module~mod_structures module~mod_abstract_angular_symmetry_function mod_abstract_angular_symmetry_function module~mod_angular_symmetry_function_3->module~mod_abstract_angular_symmetry_function module~mod_abstract_symmetry_function mod_abstract_symmetry_function module~mod_angular_symmetry_function_3->module~mod_abstract_symmetry_function module~mod_fastmath mod_fastmath module~mod_angular_symmetry_function_3->module~mod_fastmath module~mod_hash mod_hash module~mod_angular_symmetry_function_3->module~mod_hash module~mod_angular_symmetry_function_8->module~mod_periodic_table module~mod_angular_symmetry_function_8->module~mod_precision module~mod_angular_symmetry_function_8->module~mod_throw module~mod_angular_symmetry_function_8->module~mod_constants module~mod_angular_symmetry_function_8->module~mod_cutoff_function module~mod_angular_symmetry_function_8->module~mod_feature_map module~mod_angular_symmetry_function_8->module~mod_feature_map_neighborlist module~mod_angular_symmetry_function_8->module~mod_structures module~mod_angular_symmetry_function_8->module~mod_abstract_angular_symmetry_function module~mod_angular_symmetry_function_8->module~mod_abstract_symmetry_function module~mod_angular_symmetry_function_8->module~mod_hash module~mod_angular_symmetry_function_9->module~mod_periodic_table module~mod_angular_symmetry_function_9->module~mod_precision module~mod_angular_symmetry_function_9->module~mod_throw module~mod_angular_symmetry_function_9->module~mod_constants module~mod_angular_symmetry_function_9->module~mod_cutoff_function module~mod_angular_symmetry_function_9->module~mod_feature_map module~mod_angular_symmetry_function_9->module~mod_feature_map_neighborlist module~mod_angular_symmetry_function_9->module~mod_structures module~mod_angular_symmetry_function_9->module~mod_abstract_angular_symmetry_function module~mod_angular_symmetry_function_9->module~mod_abstract_symmetry_function module~mod_angular_symmetry_function_9->module~mod_fastmath module~mod_angular_symmetry_function_9->module~mod_hash module~mod_array_helpers->module~mod_precision module~mod_array_helpers->module~mod_throw module~mod_atomic_descriptor->module~mod_precision module~mod_atomic_descriptor->module~mod_element module~mod_atomic_descriptor->module~mod_structures module~mod_constants->module~mod_precision module~mod_constants->iso_c_binding module~mod_cpu_vendor->iso_c_binding module~mod_cross_matrix->module~mod_precision module~mod_cross_matrix->module~mod_linalg module~mod_cutoff_function->module~mod_precision module~mod_cutoff_function->module~mod_throw module~mod_cutoff_function->module~mod_io module~mod_abstract_cutoff_function mod_abstract_cutoff_function module~mod_cutoff_function->module~mod_abstract_cutoff_function module~mod_cutoff_function_cosine mod_cutoff_function_cosine module~mod_cutoff_function->module~mod_cutoff_function_cosine module~mod_cutoff_function_hard mod_cutoff_function_hard module~mod_cutoff_function->module~mod_cutoff_function_hard module~mod_cutoff_function_hypertangent mod_cutoff_function_hypertangent module~mod_cutoff_function->module~mod_cutoff_function_hypertangent module~mod_cutoff_function_hypertangent_approx mod_cutoff_function_hypertangent_approx module~mod_cutoff_function->module~mod_cutoff_function_hypertangent_approx module~mod_cutoff_function_null mod_cutoff_function_null module~mod_cutoff_function->module~mod_cutoff_function_null module~mod_cutoff_function_polynomial mod_cutoff_function_polynomial module~mod_cutoff_function->module~mod_cutoff_function_polynomial module~mod_cutoff_function_vdw mod_cutoff_function_vdw module~mod_cutoff_function->module~mod_cutoff_function_vdw module~mod_databatcher->module~mod_mpi module~mod_databatcher->module~mod_precision module~mod_databatcher->module~mod_throw module~mod_databatcher->module~mod_array_helpers module~mod_databatcher->module~mod_random module~mod_decorations->module~mod_precision module~mod_decorations->module~mod_throw module~mod_decorations->module~mod_io module~mod_element->module~mod_mpi module~mod_element->module~mod_periodic_table module~mod_element->module~mod_precision module~mod_element->module~mod_throw module~mod_element->module~mod_angular_symmetry_function_3 module~mod_element->module~mod_angular_symmetry_function_9 module~mod_element->module~mod_constants module~mod_element->module~mod_cutoff_function module~mod_element->module~mod_decorations module~mod_element->module~mod_feature_map module~mod_element->module~mod_io module~mod_element->module~mod_optional_args module~mod_element->module~mod_radial_symmetry_function_2 module~mod_element->module~mod_set_integer module~mod_arrays_init mod_arrays_init module~mod_element->module~mod_arrays_init module~mod_dubious_feature_map_handler mod_dubious_feature_map_handler module~mod_element->module~mod_dubious_feature_map_handler module~mod_element->module~mod_hash module~mod_set_character mod_set_character module~mod_element->module~mod_set_character module~mod_ewald_summation->module~mod_precision module~mod_ewald_summation->module~mod_abstract_electrostatics module~mod_ewald_summation->module~mod_constants module~mod_ewald_summation->module~mod_linalg module~mod_ewald_summation->module~mod_pair_electrostatics module~mod_neighbor_grid mod_neighbor_grid module~mod_ewald_summation->module~mod_neighbor_grid module~mod_neighborlist_helper mod_neighborlist_helper module~mod_ewald_summation->module~mod_neighborlist_helper module~mod_outer_product mod_outer_product module~mod_ewald_summation->module~mod_outer_product module~mod_extrapolation_warning->module~mod_periodic_table module~mod_extrapolation_warning->module~mod_precision module~mod_extrapolation_warning->module~mod_throw module~mod_extrapolation_warning->iso_c_binding module~mod_abstract_warning mod_abstract_warning module~mod_extrapolation_warning->module~mod_abstract_warning module~mod_feature_map->module~mod_precision module~mod_feature_map->module~mod_throw module~mod_feature_map->module~mod_cutoff_function module~mod_feature_map->module~mod_feature_map_neighborlist module~mod_feature_map->module~mod_io module~mod_feature_map->module~mod_structures module~mod_feature_map->module~mod_hash module~mod_sanitize mod_sanitize module~mod_feature_map->module~mod_sanitize module~mod_feature_map_neighborlist->module~mod_mpi module~mod_feature_map_neighborlist->module~mod_precision module~mod_feature_map_neighborlist->module~mod_throw module~mod_feature_map_neighborlist->module~mod_timer module~mod_feature_map_neighborlist->module~mod_constants module~mod_feature_map_neighborlist->module~mod_io module~mod_feature_map_neighborlist->module~mod_structures module~mod_feature_map_neighborlist->module~mod_abstract_cutoff_function module~mod_neighborlist mod_neighborlist module~mod_feature_map_neighborlist->module~mod_neighborlist module~mod_global_warning->module~mod_throw module~mod_global_warning->module~mod_io module~mod_global_warning->module~mod_abstract_warning module~mod_gradient_clipping->module~mod_precision module~mod_gradient_clipping->module~mod_settings module~mod_initialize_array->module~mod_mpi module~mod_initialize_array->module~mod_precision module~mod_initialize_array->module~mod_throw module~mod_initialize_array->module~mod_io module~mod_initialize_array->module~mod_random module~mod_parameter_file mod_parameter_file module~mod_initialize_array->module~mod_parameter_file module~mod_io->module~mod_precision module~mod_io->iso_fortran_env module~mod_io->module~mod_optional_args module~mod_linalg->module~mod_precision module~mod_linalg->module~mod_settings module~mod_linalg->module~mod_throw module~cublas_wrapper cublas_wrapper module~mod_linalg->module~cublas_wrapper module~mod_memory_estimation->module~mod_feature_calculator module~mod_memory_estimation->module~mod_mpi module~mod_memory_estimation->module~mod_periodic_table module~mod_memory_estimation->module~mod_precision module~mod_memory_estimation->module~mod_settings module~mod_memory_estimation->module~mod_throw module~mod_memory_estimation->module~mod_feature_map_neighborlist module~mod_memory_estimation->module~mod_io module~mod_memory_estimation->module~mod_structures module~mod_table mod_table module~mod_memory_estimation->module~mod_table module~mod_nan_check->module~mod_precision module~mod_nan_check->module~mod_throw module~mod_nan_check->ieee_arithmetic module~mod_nan_check->module~mod_io module~mod_overlap_matrix->module~mod_precision module~mod_overlap_matrix->module~mod_cutoff_function module~mod_overlap_matrix->module~mod_feature_map module~mod_overlap_matrix->module~mod_feature_map_neighborlist module~mod_overlap_matrix->module~mod_structures module~mod_pair_electrostatics->module~mod_precision module~mod_pair_electrostatics->module~mod_throw module~mod_pair_electrostatics->module~mod_abstract_electrostatics module~mod_pair_electrostatics->module~mod_constants module~mod_path->module~mod_io module~mod_radial_symmetry_function_1->module~mod_periodic_table module~mod_radial_symmetry_function_1->module~mod_precision module~mod_radial_symmetry_function_1->module~mod_throw module~mod_radial_symmetry_function_1->module~mod_cutoff_function module~mod_radial_symmetry_function_1->module~mod_feature_map module~mod_radial_symmetry_function_1->module~mod_feature_map_neighborlist module~mod_radial_symmetry_function_1->module~mod_io module~mod_radial_symmetry_function_1->module~mod_structures module~mod_abstract_radial_symmetry_function mod_abstract_radial_symmetry_function module~mod_radial_symmetry_function_1->module~mod_abstract_radial_symmetry_function module~mod_radial_symmetry_function_1->module~mod_hash module~mod_radial_symmetry_function_2->module~mod_periodic_table module~mod_radial_symmetry_function_2->module~mod_precision module~mod_radial_symmetry_function_2->module~mod_throw module~mod_radial_symmetry_function_2->module~mod_cutoff_function module~mod_radial_symmetry_function_2->module~mod_feature_map module~mod_radial_symmetry_function_2->module~mod_feature_map_neighborlist module~mod_radial_symmetry_function_2->module~mod_structures module~mod_radial_symmetry_function_2->module~mod_abstract_radial_symmetry_function module~mod_radial_symmetry_function_2->module~mod_abstract_symmetry_function module~mod_radial_symmetry_function_2->module~mod_hash module~mod_random->module~mod_precision module~mod_random->module~mod_constants module~mod_set_integer->module~mod_throw module~mod_sort->module~mod_precision module~mod_split_and_assign->module~mod_mpi module~mod_split_and_assign->module~mod_precision module~mod_split_and_assign->module~mod_throw module~mod_structures->module~mod_mpi module~mod_structures->module~mod_periodic_table module~mod_structures->module~mod_precision module~mod_structures->module~mod_throw module~mod_structures->module~mod_array_helpers module~mod_structures->module~mod_constants module~mod_structures->module~mod_linalg module~mod_structures_helper mod_structures_helper module~mod_structures->module~mod_structures_helper module~cublas_wrapper->module~mod_settings module~cublas_wrapper->iso_c_binding module~mod_abstract_angular_symmetry_function->module~mod_periodic_table module~mod_abstract_angular_symmetry_function->module~mod_precision module~mod_abstract_angular_symmetry_function->module~mod_feature_map_neighborlist module~mod_abstract_angular_symmetry_function->module~mod_structures module~mod_abstract_angular_symmetry_function->module~mod_abstract_symmetry_function module~mod_abstract_cutoff_function->module~mod_precision module~mod_abstract_radial_symmetry_function->module~mod_precision module~mod_abstract_radial_symmetry_function->module~mod_feature_map_neighborlist module~mod_abstract_radial_symmetry_function->module~mod_structures module~mod_abstract_radial_symmetry_function->module~mod_abstract_symmetry_function module~mod_abstract_symmetry_function->module~mod_precision module~mod_abstract_symmetry_function->module~mod_throw module~mod_abstract_symmetry_function->module~mod_feature_map module~mod_abstract_symmetry_function->module~mod_feature_map_neighborlist module~mod_abstract_symmetry_function->module~mod_io module~mod_abstract_symmetry_function->module~mod_structures module~mod_electric_field_prefactor mod_electric_field_prefactor module~mod_abstract_symmetry_function->module~mod_electric_field_prefactor module~mod_spin_prefactor mod_spin_prefactor module~mod_abstract_symmetry_function->module~mod_spin_prefactor module~mod_arrays_init->module~mod_precision module~mod_cutoff_function_cosine->module~mod_precision module~mod_cutoff_function_cosine->module~mod_constants module~mod_cutoff_function_cosine->module~mod_abstract_cutoff_function module~mod_cutoff_function_hard->module~mod_precision module~mod_cutoff_function_hard->module~mod_abstract_cutoff_function module~mod_cutoff_function_hypertangent->module~mod_precision module~mod_cutoff_function_hypertangent->module~mod_abstract_cutoff_function module~mod_cutoff_function_hypertangent_approx->module~mod_precision module~mod_cutoff_function_hypertangent_approx->module~mod_abstract_cutoff_function module~mod_cutoff_function_null->module~mod_precision module~mod_cutoff_function_null->module~mod_throw module~mod_cutoff_function_null->module~mod_abstract_cutoff_function module~mod_cutoff_function_polynomial->module~mod_precision module~mod_cutoff_function_polynomial->module~mod_abstract_cutoff_function module~mod_cutoff_function_polynomial->module~mod_fastmath module~mod_cutoff_function_vdw->module~mod_precision module~mod_cutoff_function_vdw->module~mod_abstract_cutoff_function module~mod_dataset_storage->module~mod_mpi module~mod_dataset_storage->module~mod_sort mod_property_list mod_property_list module~mod_dataset_storage->mod_property_list module~mod_storage_container mod_storage_container module~mod_dataset_storage->module~mod_storage_container module~mod_dubious_feature_map_handler->module~mod_precision module~mod_dubious_feature_map_handler->module~mod_throw module~mod_dubious_feature_map_handler->module~mod_decorations module~mod_dubious_feature_map_handler->module~mod_io module~mod_dynamic_double_array mod_dynamic_double_array module~mod_dubious_feature_map_handler->module~mod_dynamic_double_array module~mod_dynamic_int_array mod_dynamic_int_array module~mod_dubious_feature_map_handler->module~mod_dynamic_int_array module~mod_dynamic_line_array mod_dynamic_line_array module~mod_dubious_feature_map_handler->module~mod_dynamic_line_array module~mod_fastmath->module~mod_precision module~mod_genericfile->module~mod_mpi module~mod_genericfile->module~mod_throw module~mod_genericfile->module~mod_io module~mod_hash->module~mod_periodic_table module~mod_hash->module~mod_precision module~mod_hash->module~mod_io module~mod_neighbor_grid->module~mod_mpi module~mod_neighbor_grid->module~mod_precision module~mod_neighbor_grid->module~mod_neighborlist_helper module~mod_neighbor_grid->module~mod_structures_helper module~mod_neighbor_grid->module~mod_dynamic_int_array module~mod_neighborlist->module~mod_mpi module~mod_neighborlist->module~mod_precision module~mod_neighborlist->module~mod_settings module~mod_neighborlist->module~mod_throw module~mod_neighborlist->module~mod_io module~mod_neighborlist->module~mod_structures module~mod_neighborlist->module~mod_neighbor_grid module~mod_neighborlist->module~mod_neighborlist_helper module~mod_neighborlist->module~mod_dynamic_double_array module~mod_neighborlist->module~mod_dynamic_int_array module~mod_neighborlist_helper->module~mod_mpi module~mod_neighborlist_helper->module~mod_precision module~mod_neighborlist_helper->module~mod_linalg module~mod_outer_product->module~mod_precision module~mod_outer_product->module~mod_linalg module~mod_parameter_file->module~mod_precision module~mod_parameter_file->module~mod_throw module~mod_parameter_file->module~mod_io module~mod_parameter_file->module~mod_nan_check module~mod_abstract_broadcast_file mod_abstract_broadcast_file module~mod_parameter_file->module~mod_abstract_broadcast_file module~mod_sanitize->module~mod_throw module~mod_set_character->module~mod_throw module~mod_structures_helper->module~mod_precision module~mod_structures_helper->module~mod_linalg module~mod_table->module~mod_precision module~mod_table->module~mod_throw module~mod_table->module~mod_decorations module~mod_table->module~mod_io module~mod_abstract_broadcast_file->module~mod_mpi module~mod_abstract_broadcast_file->module~mod_throw module~mod_abstract_broadcast_file->module~mod_io module~mod_abstract_broadcast_file->module~mod_genericfile module~mod_abstract_broadcast_file->module~mod_sanitize module~mod_dynamic_double_array->module~mod_precision module~mod_dynamic_double_array->module~mod_throw module~mod_electric_field_prefactor->module~mod_precision module~mod_electric_field_prefactor->module~mod_settings module~mod_electric_field_prefactor->module~mod_feature_map_neighborlist module~mod_spin_prefactor->module~mod_precision module~mod_spin_prefactor->module~mod_feature_map_neighborlist module~mod_storage_container->module~mod_mpi module~mod_storage_container->module~mod_io module~mod_storage_container->module~mod_sort module~mod_storage_container->mod_property_list module~mod_storage_container->module~mod_dynamic_int_array module~mod_abstract_property_list mod_abstract_property_list module~mod_storage_container->module~mod_abstract_property_list module~mod_string mod_string module~mod_storage_container->module~mod_string module~mod_abstract_property_list->module~mod_mpi module~mod_abstract_property_list->module~mod_throw module~mod_abstract_property_list->module~mod_optional_args module~mod_abstract_property_list->module~mod_dynamic_int_array module~mod_abstract_property_list->module~mod_string module~mod_dynamic_int_array_2d mod_dynamic_int_array_2d module~mod_abstract_property_list->module~mod_dynamic_int_array_2d module~mod_dynamic_string_array mod_dynamic_string_array module~mod_abstract_property_list->module~mod_dynamic_string_array module~mod_string->module~mod_precision module~mod_dynamic_int_array_2d->module~mod_mpi module~mod_dynamic_string_array->module~mod_string

Used By

module~~mod_train_4g_atomic_charges_structure_batch~~UsedByGraph module~mod_train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch module~mod_train_loop_4g_charges mod_train_loop_4g_charges module~mod_train_loop_4g_charges->module~mod_train_4g_atomic_charges_structure_batch module~mod_train_mode mod_train_mode module~mod_train_mode->module~mod_train_loop_4g_charges program~runner RuNNer program~runner->module~mod_train_mode

Procedures Summary

Name Type Description
evaluate_charge_loss Subroutine Evaluate only the selected charges, including their normalization factors.
accumulate_charge_loss_gradient Subroutine Propagate one selected charge's loss derivative through QEq to all atoms.
train_4g_atomic_charges_structure_batch Subroutine Performs the core training operations for a single batch of structures. This routine executes...

Procedure Details

subroutine evaluate_charge_loss

subroutine evaluate_charge_loss( &
    loss_function, &
    prediction, &
    reference, &
    norm, &
    ids, &
    loss, &
    gradients, &
    threshold_scale &
)

Evaluate only the selected charges, including their normalization factors.

Arguments

  • loss_function : class(AbstractLossFunction) [in]
  • prediction : real(DP) (dim: (:)) [in]
  • reference : real(DP) (dim: (:)) [in]
  • norm : real(DP) (dim: (:)) [in]
  • ids : integer (dim: (:)) [in]
  • loss : real(DP) [out]
  • gradients : real(DP) (dim: (size(ids))) [out]
  • threshold_scale : real(DP) [out]

Called By

proc~~evaluate_charge_loss~~CalledByGraph proc~evaluate_charge_loss mod_train_4g_atomic_charges_structure_batch::evaluate_charge_loss 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->proc~evaluate_charge_loss 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_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges program~runner RuNNer program~runner->proc~train_mode

subroutine accumulate_charge_loss_gradient

subroutine accumulate_charge_loss_gradient( &
    qeq, &
    charges, &
    jatom, &
    dloss_dq, &
    dloss_dchi, &
    dloss_dhardness &
)

Propagate one selected charge's loss derivative through QEq to all atoms.

Arguments

  • qeq : type(TrainingChargeEquilibrator) [inout]
  • charges : real(DP) (dim: (:)) [in]
  • jatom : integer [in]
  • dloss_dq : real(DP) [in]
  • dloss_dchi : real(DP) (dim: (:)) [inout]
  • dloss_dhardness : real(DP) (dim: (:)) [inout]

Called By

proc~~accumulate_charge_loss_gradient~~CalledByGraph proc~accumulate_charge_loss_gradient mod_train_4g_atomic_charges_structure_batch::accumulate_charge_loss_gradient 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->proc~accumulate_charge_loss_gradient 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_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges program~runner RuNNer program~runner->proc~train_mode

subroutine train_4g_atomic_charges_structure_batch

subroutine train_4g_atomic_charges_structure_batch( &
    data_loader, &
    models, &
    feature_calculators, &
    loss_functions, &
    optimizers, &
    id_on_process_strucs_in_batch, &
    nbatch_struc, &
    id_in_struc_atoms_struc_batch, &
    atomic_numbers_struc_batch, &
    map_atom_to_target_structure, &
    features_struc_batch, &
    loss_threshold, &
    num_updates, &
    qeq_solvers, &
    file_coul_mat &
)

Performs the core training operations for a single batch of structures.

This routine executes the forward and backward passes for charge training on a given batch of structures and orchestrates optimizer updates.

We first create atom batches from all atoms in the given structure batch. This already takes into account the user-defined batchsizes and fractions. For each atom batch, we perform a forward pass through the electronegativity (chi) and hardness models. Then we solve the charge equilibration (QEq) equations to obtain predicted atomic charges. Even though this gives us all charges in all structures, the loss is only calculated from the charge error of the atoms in the atom batch. If the loss exceeds a dynamic threshold, it triggers a backward pass. The chain rule is used to compute the gradients of the loss with respect to the chi and hardness values. These gradients are then backpropagated through the respective models, and finally, the optimizers are called to update the model weights.

Arguments

  • data_loader : class(FileDataLoader) [inout]– The main data loader, containing structure information.
  • models : type(ModelPtr) (dim: (:,:)) [inout]– The electronegativity and hardness models for each committee member.
  • feature_calculators : type(FeatureCalculator) (dim: (:)) [inout]– The feature calculators associated with the models.
  • loss_functions : type(LossFunctionPtr) (dim: (:)) [in]– All loss functions that are used for training of this model.
  • optimizers : type(OptimizerPtr) (dim: (:,:)) [inout]– The optimizers for each model and its submodels (e.g. atomic NNs).
  • id_on_process_strucs_in_batch : integer (dim: (:)) [in]– The id on process of the structures in this structure batch.
  • nbatch_struc : integer [in]– The number of structures in this structure batch.
  • id_in_struc_atoms_struc_batch : integer (dim: (:)) [in]– The index within the structure for each atom in the flattened batch array.
  • atomic_numbers_struc_batch : integer (dim: (:)) [in]– Atomic numbers for each atom in the flattened batch array.
  • map_atom_to_target_structure : integer (dim: (:)) [in]– Maps an atom's index in the flattened array back to its structure's index.
  • features_struc_batch : real(DP) (dim: (:,:,:)) [in]– Pre-calculated features for all atoms in the structure batch.
  • loss_threshold : real(DP) (dim: (global_settings%num_committee_members)) [in]– Dynamic loss threshold for each committee member to decide if an update is performed.
  • num_updates : integer (dim: (:)) [inout]– The number of updates up to this point for each committee member.
  • qeq_solvers : type(TrainingChargeEquilibrator) (dim: (:)) [inout]– Pre-initialized QEq solvers for each structure, if available.
  • file_coul_mat : type(DataCont) [inout]– Data container for pre-loaded Coulomb matrices, if used.

Called By

proc~~train_4g_atomic_charges_structure_batch~~CalledByGraph proc~train_4g_atomic_charges_structure_batch mod_train_4g_atomic_charges_structure_batch::train_4g_atomic_charges_structure_batch 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_mode mod_train_mode::train_mode proc~train_mode->proc~train_loop_4g_charges program~runner RuNNer program~runner->proc~train_mode