locuslab/FLYP

Why finetune on validation set?

Haoxiang-Wang opened this issue · 2 comments

In README (https://github.com/locuslab/FLYP/blob/d42180645e31c16c50a7b111410c98616c2c2872/README.md), the example commands for iWildCam, FMoW and SST2 all use validation ID sets as the training set, e.g.,
python src/main.py --train-dataset=IWildCamIDVal ...

I'm confused. Why not fine-tune on the original training split instead? @SachinG007

Hi @Haoxiang-Wang ,
We do not use the IDVal for training. See the base dataloader class here

self.train_dataset = get_nonempty_subset(self.dataset, 'train', transform=preprocess)

The arg name might be a bit deceptive, since that specifies what would the test_loader key have in the dataloader object.

class IWildCamIDVal(IWildCam):

We use ID Val only for early stopping and selecting best hparam.
Let me know if it is still not clear.

OK, now I understand. But it seems the argument --train_dataset=IWildCamIDVal has no effect at all (compared with --train_dataset=IWildCam), since the evaluation is performed on args.eval_datasets rather than args.train_dataset.