This rule raises an issue when a PyTorch model state is loaded and `torch.nn.Module.eval()` or `torch.nn.Module.train()` is not called. == Why is this an issue? When using PyTorch it is common practice to load and save a model's state from/to a `.pth` file. Doing so allows, for example, to instantiate an untrained model and load learned parameters coming from another pre-trained model. Once the learned parameters are loaded to the model it is important, before inferencing, to clearly state the intention by calling `torch.nn.Module.eval()` method to set the model in evaluation mode or calling `torch.nn.Module.train()` to indicate the training will resume. Failing to call `torch.nn.Module.eval()` would leave the model in training mode which may not be the intention. == How to fix it Call the `torch.nn.Module.eval()` or `torch.nn.Module.train()` method on the model. === Code examples ==== Noncompliant code example [source,python,diff-id=1,diff-type=noncompliant] ---- import torch import torchvision.models as models model = models.vgg16() model.load_state_dict(torch.load('model_weights.pth')) # Noncompliant: model.train() or model.eval() was not called. ---- ==== Compliant solution [source,python,diff-id=1,diff-type=compliant] ---- import torch import torchvision.models as models model = models.vgg16() model.load_state_dict(torch.load('model_weights.pth')) model.eval() ---- == Resources === Documentation * PyTorch Documentation - https://pytorch.org/docs/master/generated/torch.nn.Module.html#torch.nn.Module.eval[eval - reference] * PyTorch Documentation - https://pytorch.org/docs/master/generated/torch.nn.Module.html#torch.nn.Module.train[train - reference] * PyTorch Documentation - https://pytorch.org/docs/stable/notes/autograd.html#evaluation-mode-nn-module-eval[Autograd - Evaluation Mode] ifdef::env-github,rspecator-view[] (visible only on this page) == Implementation specification === Message Primary : Set the module in training or evaluation mode. === Issue location Primary : the call to model.load_state_dict === Quickfix No endif::env-github,rspecator-view[]