argus.model¶
-
class
argus.model.
Model
(params: dict)[source]¶ -
-
fit
(train_loader: Iterable, val_loader: Optional[Iterable] = None, num_epochs: int = 1, metrics: Optional[List[Union[argus.metrics.metric.Metric, str]]] = None, metrics_on_train: bool = False, callbacks: Optional[List[argus.callbacks.callback.Callback]] = None, val_callbacks: Optional[List[argus.callbacks.callback.Callback]] = None)[source]¶ Train the argus model.
The method attaches metrics and callbacks to the train and validation, and runs the training process.
- Parameters
train_loader (Iterable) – The train data loader.
val_loader (Iterable, optional) – The validation data loader. Defaults to None.
num_epochs (int, optional) – Number of training epochs to run. Defaults to 1.
metrics (list of
argus.metrics.Metric
, optional) – List of metrics to evaluate. By default, the metrics are evaluated on the validation data (if any) only. Defaults to None.metrics_on_train (bool, optional) – Evaluate the metrics on train data as well. Defaults to False.
callbacks (list of
argus.callbacks.Callback
, optional) – List of callbacks to be attached to the training process. Defaults to None.val_callbacks (list of
argus.callbacks.Callback
, optional) – List of callbacks to be attached to the validation process. Defaults to None.
-
get_lr
() → Union[float, List[float]][source]¶ Get the learning rate from the optimizer.
It could be a single value or a list of values in the case of multiple parameter groups.
- Returns
The learning rate value or a list of individual parameter groups learning rate values.
- Return type
(float or a list of floats)
-
predict
(input)[source]¶ Make a prediction with the given input.
The prediction process consists of the input tensor transferring to the model device, forward pass of the nn_module in eval mode and application of the prediction_transform to the raw prediction output.
- Parameters
input (torch.Tensor) – The input tensor to predict with. It will be transferred to the model device. The user is responsible for ensuring that the input tensor shape and type match the model.
- Returns
- Predictions as the result of the
prediction_transform application.
- Return type
torch.Tensor or other type
-
save
(file_path: Union[str, pathlib.Path])[source]¶ Save the argus model into a file.
The argus model is saved as a dict:
{ 'model_name': Name of the argus model, 'params': Argus model parameters dict, 'nn_state_dict': torch nn_module.state_dict() }
The state_dict is always transferred to cpu prior to saving.
- Parameters
file_path (str) – Path to the argus model file.
-
set_lr
(lr: Union[float, List[float]])[source]¶ Set the learning rate for the optimizer.
The method allows setting individual learning rates for the optimizer parameter groups as well as setting even learning rate for all parameters.
- Parameters
lr (number or list/tuple of numbers) – The learning rate to set. If a single number is provided, all parameter groups learning rates are set to the same value. In order to set individual learning rates for each parameter group, a list or tuple of values with the corresponding length should be provided.
- Raises
ValueError – If lr is a list or tuple and its length is not equal to the number of parameter groups.
ValueError – If lr type is not list, tuple, or number.
AttributeError – If the model is not train_ready (i.e. not all attributes are set).
-
train_step
(batch, state: argus.engine.engine.State) → dict[source]¶ Perform a single train step.
The method is used by
argus.engine.Engine
. The train step includes input and target tensor transition to the model device, forward pass, loss evaluation, backward pass, and the train batch prediction preparation with a prediction_transform.- Parameters
(tuple of 2 torch.Tensors (batch) – (input, target)): The input data and target tensors to process.
state (
argus.engine.State
) – The argus model state.
- Returns
The train step results:
{ 'prediction': The train batch predictions, 'target': The train batch target data on the model device, 'loss': Loss function value }
- Return type
-
val_step
(batch, state: argus.engine.engine.State) → dict[source]¶ Perform a single validation step.
The method is used by
argus.engine.Engine
. The validation step includes input and target tensor transition to the model device, forward pass, loss evaluation, and the train batch prediction preparation with a prediction_transform.Gradient calculations and the model weights update are omitted, which is the main difference with the
train_step()
method.- Parameters
(tuple of 2 torch.Tensors (batch) – (input, target)): The input data and target tensors to process.
state (
argus.engine.State
) – The argus model state.
- Returns
The train step results:
{ 'prediction': The train batch predictions, 'target': The train batch target data on the model device, 'loss': Loss function value }
- Return type
-
validate
(val_loader: Optional[Iterable], metrics: Optional[List[argus.metrics.metric.Metric]] = None, callbacks: Optional[List[argus.callbacks.callback.Callback]] = None) → Dict[str, float][source]¶ Perform a validation.
- Parameters
val_loader (Iterable) – The validation data loader.
metrics (list of
argus.metrics.Metric
, optional) – List of metrics to evaluate with the data. Defaults to None.callbacks (list of
argus.callbacks.Callback
, optional) – List of callbacks to be attached to the validation process. Defaults to None.
- Returns
The metrics dictionary.
- Return type
-
Load argus model¶
-
argus.model.
load_model
(file_path: Union[str, pathlib.Path], nn_module=default, optimizer=default, loss=default, prediction_transform=default, device=default, change_params_func=Identity(), change_state_dict_func=Identity(), model_name=default, **kwargs)[source]¶ Load an argus model from a file.
The function allows loading an argus model, saved with
argus.model.Model.save()
. The model is always loaded in eval mode.- Parameters
file_path (str) – Path to the file to load.
device (str or
torch.device
, optional) – Device for the model. Defaults to None.nn_module (dict, tuple or str, optional) – Params of the nn_module to replace params in the state.
optimizer (dict, tuple or str, optional) – Params of the optimizer to replace params in the state. Set to None if don’t want to create optimizer in the loaded model.
loss (dict, tuple or str, optional) – Params of the loss to replace params in the state. Set to None if don’t want to create loss in the loaded model.
prediction_transform (dict, tuple or str, optional) – Params of the prediction_transform to replace params in the state. Set to None if don’t want to create prediction_transform in the loaded model.
change_params_func (function, optional) – Function for modification of state params. Takes as input params from the loaded state, outputs params to model creation.
change_state_dict_func (function, optional) – Function for modification of nn_module state dict. Takes as input state dict from the loaded state, outputs state dict to model creation.
model_name (str) – Class name of
argus.model.Model
. By default uses name from loaded state.
- Raises
ImportError – If the model is not available in the scope. Often it means that it is not imported or defined.
FileNotFoundError – If the file is not found by the file_path.
- Returns
Loaded argus model.
- Return type