First, this is a very good sanity check to run!
I would double check that this isn’t dataset issue.  Can you try model.train(mode=True) in your test method?  I suspect you’ll get sensible results, but it’s good to make sure before proceeding.  Then we’ll know it’s an issue with calling .eval()
I admit, this at first glance is very mysterious. You don’t happen to have dropout layers?  They are known to exert a ‘variance shift’ that can affect batchnorm layers.
A small note: The Variable()  syntax is depreciated it’s no longer necessary.
Sorry I’m not of much help right now, but I’ll think about it.