YGZWQZD / LAMDA-SSL

30 Semi-Supervised Learning Algorithms
MIT License
184 stars 16 forks source link

What is the appropriate hyperparameter of MeanTeacherReg / ICTReg / PiModelReg when using other dataset? #8

Open jason2133 opened 1 year ago

jason2133 commented 1 year ago

Hi, Thanks for creating this library. I am trying to use MeanTeacherReg, ICTReg, and PiModelReg with my custom dataset. When I used MeanTeacherReg, ICTReg, and PiModelReg without changing the hyperparameter at the example code that was fitted to Boston Dataset, although the model works, the predictions all come to zero. This means that the model did not learn my custom dataset properly.

What is the appropriate hyperparameter of MeanTeacherReg / ICTReg / PiModelReg when using other dataset?

I thought there are some hyperparemeters to change when using other dataset such as:

  1. num_samples

    # sampler
    labeled_sampler=RandomSampler(replacement=True,num_samples=64*(2**20))
    unlabeled_sampler=RandomSampler(replacement=True)
    valid_sampler=SequentialSampler()
    test_sampler=SequentialSampler()
  2. batch_size

    #dataloader
    labeled_dataloader=LabeledDataLoader(batch_size=64,num_workers=0,drop_last=True)
    unlabeled_dataloader=UnlabeledDataLoader(num_workers=0,drop_last=True)
    valid_dataloader=UnlabeledDataLoader(batch_size=64,num_workers=0,drop_last=False)
    test_dataloader=UnlabeledDataLoader(batch_size=64,num_workers=0,drop_last=False)
  3. epoch / num_it_epoch / num_it_total / eval_it

    model=MeanTeacherReg(lambda_u=0,warmup=0.4,
               mu=1,weight_decay=5e-4,ema_decay=0.999,
               epoch=1,num_it_epoch=4000,
               num_it_total=4000,
               eval_it=200,device='cpu',
               labeled_dataset=labeled_dataset,
               unlabeled_dataset=unlabeled_dataset,
               valid_dataset=valid_dataset,
               test_dataset=test_dataset,
               labeled_sampler=labeled_sampler,
               unlabeled_sampler=unlabeled_sampler,
               valid_sampler=valid_sampler,
               test_sampler=test_sampler,
               labeled_dataloader=labeled_dataloader,
               unlabeled_dataloader=unlabeled_dataloader,
               valid_dataloader=valid_dataloader,
               test_dataloader=test_dataloader,
               augmentation=augmentation,network=network,
               optimizer=optimizer,scheduler=scheduler,
               evaluation=evaluation,file=file,verbose=True)

The size of my custom dataset,

At this setting, the model did not train my dataset properly.

Can you provide some example code that you worked the model using a different dataset, not Boston dataset? Or, is there any tip to implement hyperparameter tuning of MeanTeacherReg, ICTReg, and Pi Model Reg?