18 / 22
Что происходит на каждом шаге обучения в PyTorch: прямой проход, подсчёт потерь, обратный проход, шаг оптимизатора и обнуление градиентов — и в каком порядке?
Канонический PyTorch training step: model.train() → optimizer.zero_grad() → outputs = model(inputs) → loss = criterion(outputs, targets) → loss.backward() → optimizer.step(). На валидации — model.eval() + with torch.no_grad():. Порядок критичен: zero_grad ДО backward, иначе перезаписываем уже накопленные grad'ы текущего шага.