Skip to content

fix: force eval mode for DAT models to resolve BatchNorm training mode compatibility#242

Open
paulthedev wants to merge 2 commits into
TNTwise:v2-mainfrom
paulthedev:v2-main
Open

fix: force eval mode for DAT models to resolve BatchNorm training mode compatibility#242
paulthedev wants to merge 2 commits into
TNTwise:v2-mainfrom
paulthedev:v2-main

Conversation

@paulthedev
Copy link
Copy Markdown

@paulthedev paulthedev commented May 11, 2026

Summary

  • Set models to eval mode after loading via spandrel
  • Fixes BatchNorm training mode error when using neosr-trained models

Problem

Models trained with neosr (e.g., 4x-UltraSharpV2) have BatchNorm layers in training mode that require batch_size > 1. When loaded with batch_size=1 for testing, this causes:
ValueError: Expected more than 1 value per channel when training, got input size torch.Size(1, 22, 1, 1)

Solution

Force model.eval() after loading models via spandrel. This is a defensive fix that ensures any model with BatchNorm layers in training mode gets set to eval mode.

Scope

This fix applies to PyTorch backend only.

Testing

Changes

  • backend/src/pytorch/UpscaleModelWrapper.py: Add model.eval() after spandrel model load

@paulthedev paulthedev marked this pull request as ready for review May 11, 2026 17:49
@paulthedev
Copy link
Copy Markdown
Author

Hi @TNTwise would love your support on this.

AI usage disclosure: yes

…e compatibility

Models trained with neosr have BatchNorm layers that require batch_size > 1
when in training mode. This fix sets models to eval mode before inference,
allowing neosr-trained DAT models (e.g., UltraSharpV2) to load correctly.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant