Why are you setting track_running_stats = False?
Based on the docs, it’ll use the batch statistics instead of the running stats, which explains the difference:

track_running_stats  – a boolean value that when set to  True , this module tracks the running mean and variance, and when set to  False , this module does not track such statistics and always uses batch statistics in both training and eval modes. Default:  True

Small example:
bn = nn.BatchNorm2d(3)
bn.eval()

x = torch.randn(2, 3, 24, 24) + 100
out = bn(x)
print((out - x).abs().max())
> tensor(0.0005, grad_fn=<MaxBackward1>)

bn.track_running_stats = False
out = bn(x)
print((out - x).abs().max())
> tensor(100.1011, grad_fn=<MaxBackward1>)