graphorge.gnn_base_model.train.training.EarlyStopper¶
- class EarlyStopper(validation_dataset, validation_frequency=1, trigger_tolerance=1, improvement_tolerance=0.01)[source]¶
Bases:
object
Early stopping procedure (implicit regularizaton).
- _validation_size¶
Size of the validation data set for early stopping evaluation, where size is a fraction of the whole data set contained between 0 and 1.
- Type:
- _validation_frequency¶
Frequency of validation procedures, i.e., frequency with respect to training epochs at which model is validated to evaluate early stopping criterion.
- Type:
- _trigger_tolerance¶
Number of consecutive model validation procedures without performance improvement to trigger early stopping.
- Type:
- _improvement_tolerance¶
Minimum relative improvement required to count as a performance improvement.
- Type:
- evaluate_criterion(self, model, optimizer, epoch, loss_nature='node_features_out', loss_type='mse', loss_kwargs={}, device_type='cpu')[source]¶
Evaluate early stopping criterion.
- _validate_model(self, model, optimizer, epoch,
loss_nature=’node_features_out’, loss_type=’mse’, loss_kwargs={}, device_type=’cpu’)
Perform model validation.
- load_best_performance_state(self, model, optimizer)[source]¶
Load minimum validation loss model and optimizer states.
Constructor.
- Parameters:
validation_dataset (torch.utils.data.Dataset) – Graph Neural Network graph data set. Each sample corresponds to a torch_geometric.data.Data object describing a homogeneous graph.
validation_frequency (int, default=1) – Frequency of validation procedures, i.e., frequency with respect to training epochs at which model is validated to evaluate early stopping criterion.
trigger_tolerance (int, default=1) – Number of consecutive model validation procedures without performance improvement to trigger early stopping.
improvement_tolerance (float, default=1e-2) – Minimum relative improvement required to count as a performance improvement.
List of Public Methods
Evaluate early stopping criterion.
Get validation loss history.
Check whether to evaluate early stopping criterion.
Load minimum validation loss model and optimizer states.
Methods
- __init__(validation_dataset, validation_frequency=1, trigger_tolerance=1, improvement_tolerance=0.01)[source]¶
Constructor.
- Parameters:
validation_dataset (torch.utils.data.Dataset) – Graph Neural Network graph data set. Each sample corresponds to a torch_geometric.data.Data object describing a homogeneous graph.
validation_frequency (int, default=1) – Frequency of validation procedures, i.e., frequency with respect to training epochs at which model is validated to evaluate early stopping criterion.
trigger_tolerance (int, default=1) – Number of consecutive model validation procedures without performance improvement to trigger early stopping.
improvement_tolerance (float, default=1e-2) – Minimum relative improvement required to count as a performance improvement.
- _validate_model(model, optimizer, epoch, loss_nature='node_features_out', loss_type='mse', loss_kwargs={}, batch_size=1, device_type='cpu')[source]¶
Perform model validation.
- Parameters:
model (torch.nn.Module) – Graph Neural Network model.
optimizer (torch.optim.Optimizer) – PyTorch optimizer.
epoch (int) – Training epoch.
loss_nature ({'node_features_out', 'global_features_out'}, default='node_features_out') –
Loss nature:
’node_features_out’ : Based on node output features
’global_features_out’ : Based on global output features
loss_type ({'mse',}, default='mse') –
Loss function type:
’mse’ : MSE (torch.nn.MSELoss)
loss_kwargs (dict, default={}) – Arguments of torch.nn._Loss initializer.
batch_size (int, default=1) – Number of samples loaded per batch.
device_type ({'cpu', 'cuda'}, default='cpu') – Type of device on which torch.Tensor is allocated.
- Returns:
avg_predict_loss – Average prediction loss per sample.
- Return type:
- evaluate_criterion(model, optimizer, epoch, loss_nature='node_features_out', loss_type='mse', loss_kwargs={}, batch_size=1, device_type='cpu')[source]¶
Evaluate early stopping criterion.
- Parameters:
model (torch.nn.Module) – Graph Neural Network model.
optimizer (torch.optim.Optimizer) – PyTorch optimizer.
epoch (int) – Training epoch.
loss_nature ({'node_features_out', 'global_features_out'}, default='node_features_out') –
Loss nature:
’node_features_out’ : Based on node output features
’global_features_out’ : Based on global output features
loss_type ({'mse',}, default='mse') –
Loss function type:
’mse’ : MSE (torch.nn.MSELoss)
loss_kwargs (dict, default={}) – Arguments of torch.nn._Loss initializer.
batch_size (int, default=1) – Number of samples loaded per batch.
device_type ({'cpu', 'cuda'}, default='cpu') – Type of device on which torch.Tensor is allocated.
- Returns:
is_stop_training – True if early stopping criterion has been triggered, False otherwise.
- Return type:
- load_best_performance_state(model, optimizer)[source]¶
Load minimum validation loss model and optimizer states.
Both model and optimizer are updated ‘in-place’ with stored state data.
- Parameters:
model (torch.nn.Module) – Graph Neural Network model.
optimizer (torch.optim.Optimizer) – PyTorch optimizer.
- Returns:
best_training_epoch – Training epoch corresponding to the best performance.
- Return type: