diff --git a/kgcnn/io/loader.py b/kgcnn/io/loader.py index 779af9ba..ba95d5de 100644 --- a/kgcnn/io/loader.py +++ b/kgcnn/io/loader.py @@ -189,7 +189,7 @@ def generator(): if assignment_to_id[i] is None: values = np.array(array_list, dtype=inputs[i]["dtype"]) if padded_disjoint: - out = pad_at_axis(values, (1, 0), axis=0) + values = pad_at_axis(values, (1, 0), axis=0) out[i] = values else: values = np.concatenate(array_list, axis=0) @@ -207,14 +207,17 @@ def generator(): counts = np.concatenate([np.array([num_pad_required], dtype=counts.dtype), counts], axis=0) out_counts[i] = counts - if out[pos_count[ids]] is None: - out[pos_count[ids]] = counts - if out[pos_batch_id[ids]] is None: - out[pos_batch_id[ids]] = np.repeat( - np.arange(len(counts), dtype="int64"), repeats=counts) - if out[pos_subgraph_id[ids]] is None: - out[pos_subgraph_id[ids]] = np.concatenate( - [np.arange(x, dtype="int64") for x in counts], axis=0) + if ids in pos_count: + if out[pos_count[ids]] is None: + out[pos_count[ids]] = counts + if ids in pos_batch_id: + if out[pos_batch_id[ids]] is None: + out[pos_batch_id[ids]] = np.repeat( + np.arange(len(counts), dtype="int64"), repeats=counts) + if ids in pos_subgraph_id: + if out[pos_subgraph_id[ids]] is None: + out[pos_subgraph_id[ids]] = np.concatenate( + [np.arange(x, dtype="int64") for x in counts], axis=0) # Indices for i in inputs.keys(): diff --git a/kgcnn/losses/losses.py b/kgcnn/losses/losses.py index 74436643..cd006763 100644 --- a/kgcnn/losses/losses.py +++ b/kgcnn/losses/losses.py @@ -9,15 +9,21 @@ @ks.saving.register_keras_serializable(package='kgcnn', name='MeanAbsoluteError') class MeanAbsoluteError(Loss): - def __init__(self, reduction="sum_over_batch_size", name="mean_absolute_error", dtype=None): + def __init__(self, reduction="sum_over_batch_size", name="mean_absolute_error", + padded_disjoint: bool = False, dtype=None): super(MeanAbsoluteError, self).__init__(reduction=reduction, name=name, dtype=dtype) + self.padded_disjoint = padded_disjoint def call(self, y_true, y_pred): + if self.padded_disjoint: + y_true = y_true[1:] + y_pred = y_pred[1:] out = mean_absolute_error(y_true, y_pred) return out def get_config(self): config = super(MeanAbsoluteError, self).get_config() + config.update({"padded_disjoint": self.padded_disjoint}) return config @@ -53,6 +59,45 @@ def get_config(self): return config +@ks.saving.register_keras_serializable(package='kgcnn', name='DisjointForceMeanAbsoluteError') +class DisjointForceMeanAbsoluteError(Loss): + """This is dummy class. Not working at the moment as intended. + + We need to pass the node ids here somehow. + """ + + def __init__(self, reduction="sum_over_batch_size", name="force_mean_absolute_error", + squeeze_states: bool = True, find_padded_atoms: bool = True, dtype=None): + super(DisjointForceMeanAbsoluteError, self).__init__(reduction=reduction, name=name, dtype=dtype) + self.squeeze_states = squeeze_states + self.find_padded_atoms = find_padded_atoms + + def call(self, y_true, y_pred): + # Shape: ([N], 3, S) + if self.find_padded_atoms: + check_nonzero = ops.logical_not( + ops.all(ops.isclose(y_true, ops.convert_to_tensor(0., dtype=y_true.dtype)), axis=1)) + y_pred = y_pred * ops.cast(ops.expand_dims(check_nonzero, axis=1), dtype=y_pred.dtype) + row_count = ops.sum(ops.cast(check_nonzero, dtype="int32"), axis=0) + row_count = ops.where(row_count < 1, 1, row_count) # Prevent divide by 0. + norm = 1 / ops.cast(row_count, dtype=y_true.dtype) + else: + norm = 1/ops.shape(y_true)[0] + + diff = ops.abs(y_true-y_pred) + out = ops.mean(diff, axis=1) + out = ops.sum(out, axis=0)*norm + if not self.squeeze_states: + out = ops.mean(out, axis=-1) + + return out + + def get_config(self): + config = super(DisjointForceMeanAbsoluteError, self).get_config() + config.update({"find_padded_atoms": self.find_padded_atoms, "squeeze_states": self.squeeze_states}) + return config + + @ks.saving.register_keras_serializable(package='kgcnn', name='BinaryCrossentropyNoNaN') class BinaryCrossentropyNoNaN(ks.losses.BinaryCrossentropy): diff --git a/training/results/MatProjectGapDataset/Megnet_make_crystal_model/Megnet_MatProjectGapDataset_score.yaml b/training/results/MatProjectGapDataset/Megnet_make_crystal_model/Megnet_MatProjectGapDataset_score.yaml new file mode 100644 index 00000000..68253172 --- /dev/null +++ b/training/results/MatProjectGapDataset/Megnet_make_crystal_model/Megnet_MatProjectGapDataset_score.yaml @@ -0,0 +1,157 @@ +OS: posix_linux +backend: tensorflow +cuda_available: 'True' +data_unit: eV +date_time: '2024-02-24 06:26:37' +device_id: '[LogicalDevice(name=''/device:CPU:0'', device_type=''CPU''), LogicalDevice(name=''/device:GPU:0'', + device_type=''GPU'')]' +device_memory: '[]' +device_name: '[{}, {''compute_capability'': (8, 0), ''device_name'': ''NVIDIA A100 + 80GB PCIe''}]' +epochs: +- 1000 +- 1000 +- 1000 +- 1000 +- 1000 +execute_folds: +- 4 +kgcnn_version: 4.0.1 +learning_rate: +- 5.549999968934571e-06 +- 5.549999968934571e-06 +- 5.549999968934571e-06 +- 5.549999968934571e-06 +- 5.549999968934571e-06 +loss: +- 0.015490625984966755 +- 0.015005970373749733 +- 0.013733846135437489 +- 0.015239803120493889 +- 0.013305951841175556 +max_learning_rate: +- 0.0005000000237487257 +- 0.0005000000237487257 +- 0.0005000000237487257 +- 0.0005000000237487257 +- 0.0005000000237487257 +max_loss: +- 0.4093307554721832 +- 0.4096440374851227 +- 0.40621218085289 +- 0.40501534938812256 +- 0.4052284359931946 +max_scaled_mean_absolute_error: +- 0.6538791060447693 +- 0.655254602432251 +- 0.6496603488922119 +- 0.6482604742050171 +- 0.6476054787635803 +max_scaled_root_mean_squared_error: +- 1.0478416681289673 +- 1.0511925220489502 +- 1.046431541442871 +- 1.0417505502700806 +- 1.0431451797485352 +max_val_loss: +- 0.2568034529685974 +- 0.25980663299560547 +- 0.2764630913734436 +- 0.2725690007209778 +- 0.2516973912715912 +max_val_scaled_mean_absolute_error: +- 0.40973129868507385 +- 0.41456735134124756 +- 0.44212689995765686 +- 0.4353194534778595 +- 0.4004021883010864 +max_val_scaled_root_mean_squared_error: +- 0.7799133062362671 +- 0.7795096039772034 +- 0.8122066259384155 +- 0.8199198842048645 +- 0.7473491430282593 +min_learning_rate: +- 5.549999968934571e-06 +- 5.549999968934571e-06 +- 5.549999968934571e-06 +- 5.549999968934571e-06 +- 5.549999968934571e-06 +min_loss: +- 0.012300114147365093 +- 0.012306654825806618 +- 0.011712302453815937 +- 0.01248718798160553 +- 0.011630120687186718 +min_scaled_mean_absolute_error: +- 0.019647523760795593 +- 0.019690606743097305 +- 0.01873534917831421 +- 0.019993698224425316 +- 0.018590165302157402 +min_scaled_root_mean_squared_error: +- 0.11326158046722412 +- 0.11402382701635361 +- 0.10926864296197891 +- 0.11012609302997589 +- 0.11126671731472015 +min_val_loss: +- 0.12271781265735626 +- 0.12614120543003082 +- 0.1241195946931839 +- 0.12728427350521088 +- 0.12087533622980118 +min_val_scaled_mean_absolute_error: +- 0.1960776001214981 +- 0.20183902978897095 +- 0.19857794046401978 +- 0.20317614078521729 +- 0.19241274893283844 +min_val_scaled_root_mean_squared_error: +- 0.4753977060317993 +- 0.4847562611103058 +- 0.4655359387397766 +- 0.47441938519477844 +- 0.45533809065818787 +model_class: make_crystal_model +model_name: Megnet +model_version: '2023-12-05' +multi_target_indices: null +number_histories: 5 +scaled_mean_absolute_error: +- 0.024746032431721687 +- 0.02400919795036316 +- 0.021968580782413483 +- 0.0244015920907259 +- 0.02126884274184704 +scaled_root_mean_squared_error: +- 0.11563872545957565 +- 0.11580397933721542 +- 0.11044206470251083 +- 0.11158757656812668 +- 0.11241202801465988 +seed: 42 +time_list: +- 1 day, 15:37:34.754554 +- 1 day, 14:15:22.432003 +- 1 day, 13:59:52.891144 +- 1 day, 14:25:57.611502 +- 1 day, 13:46:45.172808 +val_loss: +- 0.12476463615894318 +- 0.12946417927742004 +- 0.12739905714988708 +- 0.12979497015476227 +- 0.12356005609035492 +val_scaled_mean_absolute_error: +- 0.1991664171218872 +- 0.2071896493434906 +- 0.20360678434371948 +- 0.20720550417900085 +- 0.197036474943161 +val_scaled_root_mean_squared_error: +- 0.48367053270339966 +- 0.5019604563713074 +- 0.485824316740036 +- 0.49431952834129333 +- 0.4695015847682953 diff --git a/training/results/MatProjectGapDataset/Megnet_make_crystal_model/Megnet_hyper.json b/training/results/MatProjectGapDataset/Megnet_make_crystal_model/Megnet_hyper.json new file mode 100644 index 00000000..6be4f027 --- /dev/null +++ b/training/results/MatProjectGapDataset/Megnet_make_crystal_model/Megnet_hyper.json @@ -0,0 +1 @@ +{"model": {"module_name": "kgcnn.literature.Megnet", "class_name": "make_crystal_model", "config": {"name": "Megnet", "inputs": [{"shape": [null], "name": "node_number", "dtype": "int32", "ragged": true}, {"shape": [null, 3], "name": "node_coordinates", "dtype": "float32", "ragged": true}, {"shape": [null, 2], "name": "range_indices", "dtype": "int64", "ragged": true}, {"shape": [1], "name": "charge", "dtype": "float32", "ragged": false}, {"shape": [null, 3], "name": "range_image", "dtype": "int64", "ragged": true}, {"shape": [3, 3], "name": "graph_lattice", "dtype": "float32", "ragged": false}], "input_tensor_type": "ragged", "input_embedding": null, "input_node_embedding": {"input_dim": 95, "output_dim": 64}, "make_distance": true, "expand_distance": true, "gauss_args": {"bins": 25, "distance": 5, "offset": 0.0, "sigma": 0.4}, "meg_block_args": {"node_embed": [64, 32, 32], "edge_embed": [64, 32, 32], "env_embed": [64, 32, 32], "activation": "kgcnn>softplus2"}, "set2set_args": {"channels": 16, "T": 3, "pooling_method": "sum", "init_qstar": "0"}, "node_ff_args": {"units": [64, 32], "activation": "kgcnn>softplus2"}, "edge_ff_args": {"units": [64, 32], "activation": "kgcnn>softplus2"}, "state_ff_args": {"units": [64, 32], "activation": "kgcnn>softplus2"}, "nblocks": 3, "has_ff": true, "dropout": null, "use_set2set": true, "verbose": 10, "output_embedding": "graph", "output_mlp": {"use_bias": [true, true, true], "units": [32, 16, 1], "activation": ["kgcnn>softplus2", "kgcnn>softplus2", "linear"]}}}, "training": {"cross_validation": {"class_name": "KFold", "config": {"n_splits": 5, "random_state": 42, "shuffle": true}}, "fit": {"batch_size": 32, "epochs": 1000, "validation_freq": 10, "verbose": 2, "callbacks": [{"class_name": "kgcnn>LinearLearningRateScheduler", "config": {"learning_rate_start": 0.0005, "learning_rate_stop": 5e-06, "epo_min": 100, "epo": 1000, "verbose": 0}}]}, "compile": {"optimizer": {"class_name": "Adam", "config": {"learning_rate": 0.0005}}, "loss": "mean_absolute_error"}, "scaler": {"class_name": "StandardLabelScaler", "module_name": "kgcnn.data.transform.scaler.standard", "config": {"with_std": true, "with_mean": true, "copy": true}}, "multi_target_indices": null}, "data": {"data_unit": "eV"}, "info": {"postfix": "", "postfix_file": "", "kgcnn_version": "2.2.3"}, "dataset": {"class_name": "MatProjectGapDataset", "module_name": "kgcnn.data.datasets.MatProjectGapDataset", "config": {}, "methods": [{"map_list": {"method": "set_range_periodic", "max_distance": 5.0}}]}} \ No newline at end of file diff --git a/training/results/MatProjectGapDataset/PAiNN_make_crystal_model/PAiNN_MatProjectGapDataset_score.yaml b/training/results/MatProjectGapDataset/PAiNN_make_crystal_model/PAiNN_MatProjectGapDataset_score.yaml new file mode 100644 index 00000000..5720764e --- /dev/null +++ b/training/results/MatProjectGapDataset/PAiNN_make_crystal_model/PAiNN_MatProjectGapDataset_score.yaml @@ -0,0 +1,157 @@ +OS: posix_linux +backend: tensorflow +cuda_available: 'True' +data_unit: eV +date_time: '2024-02-23 16:59:16' +device_id: '[LogicalDevice(name=''/device:CPU:0'', device_type=''CPU''), LogicalDevice(name=''/device:GPU:0'', + device_type=''GPU'')]' +device_memory: '[]' +device_name: '[{}, {''compute_capability'': (8, 0), ''device_name'': ''NVIDIA A100 + 80GB PCIe''}]' +epochs: +- 800 +- 800 +- 800 +- 800 +- 800 +execute_folds: +- 4 +kgcnn_version: 4.0.1 +learning_rate: +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +loss: +- 0.0039004620630294085 +- 0.003916184417903423 +- 0.0043257130309939384 +- 0.003939474001526833 +- 0.0040674046613276005 +max_learning_rate: +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +max_loss: +- 0.41113507747650146 +- 36044908.0 +- 660.559814453125 +- 30.613683700561523 +- 3626.689697265625 +max_scaled_mean_absolute_error: +- 0.6566868424415588 +- 57672440.0 +- 1056.6749267578125 +- 49.02043151855469 +- 5797.751953125 +max_scaled_root_mean_squared_error: +- 95.13578033447266 +- 16801497088.0 +- 307828.625 +- 11637.791015625 +- 1689029.5 +max_val_loss: +- 0.2099333107471466 +- 0.20878338813781738 +- 0.2725008428096771 +- 0.25658366084098816 +- 0.22357134521007538 +max_val_scaled_mean_absolute_error: +- 0.33492323756217957 +- 0.3327743411064148 +- 0.43578827381134033 +- 0.4105203449726105 +- 0.35585781931877136 +max_val_scaled_root_mean_squared_error: +- 0.6633135080337524 +- 0.6446204781532288 +- 0.7993824481964111 +- 13.13320541381836 +- 7.985672950744629 +min_learning_rate: +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +- 1.0128571375389583e-05 +min_loss: +- 0.0039004620630294085 +- 0.003916184417903423 +- 0.0043257130309939384 +- 0.003939474001526833 +- 0.0040674046613276005 +min_scaled_mean_absolute_error: +- 0.006231977604329586 +- 0.006265206728130579 +- 0.006918844301253557 +- 0.006306646391749382 +- 0.006501360796391964 +min_scaled_root_mean_squared_error: +- 0.02963428385555744 +- 0.02872355282306671 +- 0.03361046314239502 +- 0.032959502190351486 +- 0.03092779405415058 +min_val_loss: +- 0.13420027494430542 +- 0.1344359666109085 +- 0.13816840946674347 +- 0.13950085639953613 +- 0.13918167352676392 +min_val_scaled_mean_absolute_error: +- 0.21386714279651642 +- 0.21488513052463531 +- 0.22120772302150726 +- 0.2229076325893402 +- 0.22201088070869446 +min_val_scaled_root_mean_squared_error: +- 0.5075736045837402 +- 0.5053931474685669 +- 0.5202224254608154 +- 0.5326010584831238 +- 0.5088955760002136 +model_class: make_crystal_model +model_name: PAiNN +model_version: '2023-10-04' +multi_target_indices: null +number_histories: 5 +scaled_mean_absolute_error: +- 0.006231977604329586 +- 0.006265206728130579 +- 0.006918844301253557 +- 0.006306646391749382 +- 0.006501360796391964 +scaled_root_mean_squared_error: +- 0.02963428385555744 +- 0.02872355282306671 +- 0.03366955369710922 +- 0.032959502190351486 +- 0.03092779405415058 +seed: 42 +time_list: +- '12:55:23.477340' +- '12:59:36.382262' +- '12:47:21.887601' +- '12:46:45.261038' +- '12:48:22.337720' +val_loss: +- 0.13466158509254456 +- 0.1347440630197525 +- 0.13895030319690704 +- 0.13950085639953613 +- 0.15652549266815186 +val_scaled_mean_absolute_error: +- 0.21461348235607147 +- 0.21536585688591003 +- 0.22242504358291626 +- 0.2229076325893402 +- 0.24958842992782593 +val_scaled_root_mean_squared_error: +- 0.5128070712089539 +- 0.5098994374275208 +- 0.523314356803894 +- 0.7270386219024658 +- 4.8391876220703125 diff --git a/training/results/MatProjectGapDataset/PAiNN_make_crystal_model/PAiNN_hyper.json b/training/results/MatProjectGapDataset/PAiNN_make_crystal_model/PAiNN_hyper.json new file mode 100644 index 00000000..b8523171 --- /dev/null +++ b/training/results/MatProjectGapDataset/PAiNN_make_crystal_model/PAiNN_hyper.json @@ -0,0 +1 @@ +{"model": {"module_name": "kgcnn.literature.PAiNN", "class_name": "make_crystal_model", "config": {"name": "PAiNN", "inputs": [{"shape": [null], "name": "node_number", "dtype": "int32", "ragged": true}, {"shape": [null, 3], "name": "node_coordinates", "dtype": "float32", "ragged": true}, {"shape": [null, 2], "name": "range_indices", "dtype": "int64", "ragged": true}, {"shape": [null, 3], "name": "range_image", "dtype": "int64", "ragged": true}, {"shape": [3, 3], "name": "graph_lattice", "dtype": "float32", "ragged": false}], "input_tensor_type": "ragged", "input_embedding": null, "input_node_embedding": {"input_dim": 95, "output_dim": 128}, "bessel_basis": {"num_radial": 20, "cutoff": 5.0, "envelope_exponent": 5}, "equiv_initialize_kwargs": {"dim": 3, "method": "eye"}, "pooling_args": {"pooling_method": "mean"}, "conv_args": {"units": 128, "cutoff": null, "conv_pool": "sum"}, "update_args": {"units": 128}, "depth": 3, "verbose": 10, "equiv_normalization": true, "node_normalization": false, "output_embedding": "graph", "output_mlp": {"use_bias": [true, true], "units": [128, 1], "activation": ["swish", "linear"]}}}, "training": {"cross_validation": {"class_name": "KFold", "config": {"n_splits": 5, "random_state": 42, "shuffle": true}}, "fit": {"batch_size": 32, "epochs": 800, "validation_freq": 10, "verbose": 2, "callbacks": [{"class_name": "kgcnn>LinearLearningRateScheduler", "config": {"learning_rate_start": 0.0001, "learning_rate_stop": 1e-05, "epo_min": 100, "epo": 800, "verbose": 0}}]}, "compile": {"optimizer": {"class_name": "Adam", "config": {"learning_rate": 0.0001}}, "loss": "mean_absolute_error"}, "scaler": {"class_name": "StandardLabelScaler", "module_name": "kgcnn.data.transform.scaler.standard", "config": {"with_std": true, "with_mean": true, "copy": true}}, "multi_target_indices": null}, "data": {"data_unit": "eV"}, "info": {"postfix": "", "postfix_file": "", "kgcnn_version": "4.0.0"}, "dataset": {"class_name": "MatProjectGapDataset", "module_name": "kgcnn.data.datasets.MatProjectGapDataset", "config": {}, "methods": [{"map_list": {"method": "set_range_periodic", "max_distance": 5.0}}]}} \ No newline at end of file diff --git a/training/results/MatProjectIsMetalDataset/PAiNN_make_crystal_model/PAiNN_MatProjectIsMetalDataset_score.yaml b/training/results/MatProjectIsMetalDataset/PAiNN_make_crystal_model/PAiNN_MatProjectIsMetalDataset_score.yaml new file mode 100644 index 00000000..bc973549 --- /dev/null +++ b/training/results/MatProjectIsMetalDataset/PAiNN_make_crystal_model/PAiNN_MatProjectIsMetalDataset_score.yaml @@ -0,0 +1,157 @@ +OS: posix_linux +auc: +- 0.9990034699440002 +- 0.9988107085227966 +- 0.9989498257637024 +- 0.9990732073783875 +- 0.999163031578064 +backend: tensorflow +binary_accuracy: +- 0.9897609353065491 +- 0.9889361262321472 +- 0.992058515548706 +- 0.9921174645423889 +- 0.9915873408317566 +cuda_available: 'True' +data_unit: '' +date_time: '2024-02-16 16:33:18' +device_id: '[LogicalDevice(name=''/device:CPU:0'', device_type=''CPU''), LogicalDevice(name=''/device:GPU:0'', + device_type=''GPU'')]' +device_memory: '[]' +device_name: '[{}, {''compute_capability'': (8, 0), ''device_name'': ''NVIDIA A100 + 80GB PCIe''}]' +epochs: +- 80 +- 80 +- 80 +- 80 +- 80 +execute_folds: +- 4 +kgcnn_version: 4.0.0 +learning_rate: +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +loss: +- 0.03074530139565468 +- 0.03679066151380539 +- 0.02692309580743313 +- 0.027816852554678917 +- 0.026371780782938004 +max_auc: +- 0.9994605183601379 +- 0.9997408986091614 +- 0.9996462464332581 +- 0.9996382594108582 +- 0.9995640516281128 +max_binary_accuracy: +- 0.9922588467597961 +- 0.9952751994132996 +- 0.9938141703605652 +- 0.9948981404304504 +- 0.9940851926803589 +max_learning_rate: +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +max_loss: +- 32226.587890625 +- 8.287942886352539 +- 2.030217409133911 +- 1.0646990537643433 +- 42.27621078491211 +max_val_auc: +- 0.9525028467178345 +- 0.9573900103569031 +- 0.9515037536621094 +- 0.9481773376464844 +- 0.9524354934692383 +max_val_binary_accuracy: +- 0.900414764881134 +- 0.9069657921791077 +- 0.8984824419021606 +- 0.9008389115333557 +- 0.8998444676399231 +max_val_loss: +- 0.7522967457771301 +- 0.7606850266456604 +- 0.9958094358444214 +- 0.9595327973365784 +- 0.8998724818229675 +min_auc: +- 0.9086387157440186 +- 0.9049643874168396 +- 0.911741316318512 +- 0.9111402034759521 +- 0.9103381633758545 +min_binary_accuracy: +- 0.847132682800293 +- 0.8438807129859924 +- 0.8493478298187256 +- 0.8491357564926147 +- 0.8496795296669006 +min_learning_rate: +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +- 9.999999747378752e-05 +min_loss: +- 0.024197589606046677 +- 0.014960935339331627 +- 0.019689055159687996 +- 0.016139768064022064 +- 0.01787395589053631 +min_val_auc: +- 0.9361674189567566 +- 0.9368234872817993 +- 0.9294444918632507 +- 0.9277995228767395 +- 0.9321828484535217 +min_val_binary_accuracy: +- 0.8937694430351257 +- 0.8997549414634705 +- 0.8934866786003113 +- 0.8933923840522766 +- 0.8874958753585815 +min_val_loss: +- 0.27592554688453674 +- 0.26044926047325134 +- 0.30139777064323425 +- 0.31141558289527893 +- 0.3026418685913086 +model_class: make_crystal_model +model_name: PAiNN +model_version: '2023-10-04' +multi_target_indices: null +number_histories: 5 +seed: 42 +time_list: +- '1:18:15.732015' +- '1:18:10.154770' +- '1:18:17.447356' +- '1:18:19.121370' +- '1:18:27.352793' +val_auc: +- 0.9388840198516846 +- 0.9368234872817993 +- 0.9294444918632507 +- 0.9313932657241821 +- 0.9322530031204224 +val_binary_accuracy: +- 0.900414764881134 +- 0.9039965867996216 +- 0.8934866786003113 +- 0.8989065885543823 +- 0.8978649377822876 +val_loss: +- 0.7522967457771301 +- 0.7606850266456604 +- 0.9958094358444214 +- 0.8823920488357544 +- 0.8339132070541382 diff --git a/training/results/MatProjectIsMetalDataset/PAiNN_make_crystal_model/PAiNN_hyper.json b/training/results/MatProjectIsMetalDataset/PAiNN_make_crystal_model/PAiNN_hyper.json new file mode 100644 index 00000000..9721ce8c --- /dev/null +++ b/training/results/MatProjectIsMetalDataset/PAiNN_make_crystal_model/PAiNN_hyper.json @@ -0,0 +1 @@ +{"model": {"module_name": "kgcnn.literature.PAiNN", "class_name": "make_crystal_model", "config": {"name": "PAiNN", "inputs": [{"shape": [null], "name": "node_number", "dtype": "int32", "ragged": true}, {"shape": [null, 3], "name": "node_coordinates", "dtype": "float32", "ragged": true}, {"shape": [null, 2], "name": "range_indices", "dtype": "int64", "ragged": true}, {"shape": [null, 3], "name": "range_image", "dtype": "int64", "ragged": true}, {"shape": [3, 3], "name": "graph_lattice", "dtype": "float32", "ragged": false}], "input_tensor_type": "ragged", "input_embedding": null, "input_node_embedding": {"input_dim": 95, "output_dim": 128}, "bessel_basis": {"num_radial": 20, "cutoff": 5.0, "envelope_exponent": 5}, "equiv_initialize_kwargs": {"dim": 3, "method": "eye"}, "pooling_args": {"pooling_method": "mean"}, "conv_args": {"units": 128, "cutoff": null, "conv_pool": "sum"}, "update_args": {"units": 128}, "depth": 3, "verbose": 10, "equiv_normalization": true, "node_normalization": false, "output_embedding": "graph", "output_mlp": {"use_bias": [true, true], "units": [128, 1], "activation": ["swish", "sigmoid"]}}}, "training": {"cross_validation": {"class_name": "KFold", "config": {"n_splits": 5, "random_state": 42, "shuffle": true}}, "fit": {"batch_size": 32, "epochs": 80, "validation_freq": 10, "verbose": 2, "callbacks": [{"class_name": "kgcnn>LinearLearningRateScheduler", "config": {"learning_rate_start": 0.0001, "learning_rate_stop": 1e-05, "epo_min": 100, "epo": 80, "verbose": 0}}]}, "compile": {"optimizer": {"class_name": "Adam", "config": {"learning_rate": 0.0001}}, "loss": "binary_crossentropy", "metrics": [{"class_name": "AUC", "config": {"name": "auc"}}, "binary_accuracy"]}, "multi_target_indices": null}, "data": {"data_unit": ""}, "info": {"postfix": "", "postfix_file": "", "kgcnn_version": "4.0.0"}, "dataset": {"class_name": "MatProjectIsMetalDataset", "module_name": "kgcnn.data.datasets.MatProjectIsMetalDataset", "config": {}, "methods": [{"map_list": {"method": "set_range_periodic", "max_distance": 5.0}}]}} \ No newline at end of file