What is the difference between model.train() and model.eval()?

Updated May 17, 2026

Short answer

train() enables training behavior; eval() switches to inference mode.

Deep explanation

Layers like dropout and batchnorm behave differently depending on mode.

Real-world example

Used when switching between training and validation loops.

Common mistakes

  • Forgetting eval() during inference.

Follow-up questions

  • Does eval() disable gradients?
  • What changes in BatchNorm during eval?

More PyTorch interview questions

View all →