eval.py is missing a model.eval() or model.encoder.eval() call prior to the linear layer training loop. Without it, the BatchNorm moving statistics are still being updated in the encoder network with each forward pass and it's not doing linear probing.
As expected, using eval mode and linear probing only brings performance down from 86.99% to 85.50%.
Thanks for the minimal VICReg implementation!
eval.py
is missing amodel.eval()
ormodel.encoder.eval()
call prior to the linear layer training loop. Without it, the BatchNorm moving statistics are still being updated in the encoder network with each forward pass and it's not doing linear probing.As expected, using eval mode and linear probing only brings performance down from 86.99% to 85.50%.
Best, Neel