First of all, thanks a lot for this great library! It really facilitates meta-learning experiments.
I have noticed that semi-supervised data loading is currently not supported in pytorch-meta. Nonetheless, this would be useful to reproduce or expand upon the recent literature on semi-supervised meta-learning (e.g. 'Meta-Learning for Semi-Supervised Few-Shot Classification'). Thus, I would like to add this feature and wanted to ask for some direction.
Semi-supervised meta-learning, as described in the aforementioned paper, has the following requirements at both meta-train and meta-test time:
Load K labelled samples from N classes (N-way, K-shot as already provided, where K can be different for the support and query set).
From the same N classes load an additional M unlabelled samples, that can never appear in the labelled set.
Optionally, load M unlabelled samples from H distractor classes, that are disjunct from the previous N classes.
The ratio between labelled and unlabelled samples should be the same within each class and should be a parameter.
Do you have any suggestions which would be the best approach to do this?
One approach might be to have two separate datasets and corresponding dataloaders, one for labelled data and one for unlabelled data (including distractors). One could, for example, pass a random seed and labelled_ratio to restrict the datasets to only use part of the stored data within each ClassDataset. However, I do not know how to guarantee, that the unlabelled dataloader would load the same N classes as used by the labelled dataloader.
First of all, thanks a lot for this great library! It really facilitates meta-learning experiments.
I have noticed that semi-supervised data loading is currently not supported in pytorch-meta. Nonetheless, this would be useful to reproduce or expand upon the recent literature on semi-supervised meta-learning (e.g. 'Meta-Learning for Semi-Supervised Few-Shot Classification'). Thus, I would like to add this feature and wanted to ask for some direction.
Semi-supervised meta-learning, as described in the aforementioned paper, has the following requirements at both meta-train and meta-test time:
Do you have any suggestions which would be the best approach to do this?
One approach might be to have two separate datasets and corresponding dataloaders, one for labelled data and one for unlabelled data (including distractors). One could, for example, pass a random seed and labelled_ratio to restrict the datasets to only use part of the stored data within each ClassDataset. However, I do not know how to guarantee, that the unlabelled dataloader would load the same N classes as used by the labelled dataloader.