Why this matters
When loading a model’s state in PyTorch, failing to set it to training (`train()`) or evaluation (`eval()`) mode can lead to incorrect behavior.
Verify that after loading a PyTorch model, either `model.eval()` or `model.train()` is called. Failing to do so can result in incorrect behavior, especially for layers like dropout and batch normalization.
When loading a model’s state in PyTorch, failing to set it to training (`train()`) or evaluation (`eval()`) mode can lead to incorrect behavior.
Side-by-side examples engineers can pattern-match during review.
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.import torch
import torchvision.models as models
model = models.vgg16()
model.load_state_dict(torch.load('model_weights.pth'))
model.eval()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.import torch
import torchvision.models as models
model = models.vgg16()
model.load_state_dict(torch.load('model_weights.pth'))
model.eval()From the same buckets as this rule.
Check if loops use equality operators (== or !=) in termination conditions. These can lead to infinite loops if the condition is never met exactly. Instead, use relational operators like < or > for safer loop termination.