What are all of the differences between `.validate()` and `.test()`?
After .fit() concludes, I run first .validate(ckpt_path=None) and then .test(ckpt_path=None). I use the exact same code for both of them: validation_step is identical to test_step, validation_epoch_end matches test_epoch_end, and val_dataloader is identical to test_dataloader. My trainer also has limit_val_batches=1.0, running the whole dataset. Yet, the two values I get are dramatically different: test error is far lower, typically up to an order of magnitude. What is going on in the test phase that could cause this?
In the end it appears to have been some sort of seed issue -- I still don't understand quite what was happening, but seed_everything(1) fixed it.