/MixMatch-pytorch

Code for "MixMatch - A Holistic Approach to Semi-Supervised Learning"

Primary LanguagePythonMIT LicenseMIT

MixMatch

This is an unofficial PyTorch implementation of MixMatch: A Holistic Approach to Semi-Supervised Learning. The official Tensorflow implementation is here.

Now only experiments on CIFAR-10 are available.

This repository carefully implemented important details of the official implementation to reproduce the results.

Requirements

  • Python 3.6+
  • PyTorch 1.0
  • torchvision 0.2.2 (older versions are not compatible with this code)
  • tensorboardX
  • progress
  • matplotlib
  • numpy

Usage

Train

Train the model by 250 labeled data of CIFAR-10 dataset:

python train.py --gpu <gpu_id> --n-labeled 250 --out cifar10@250

Train the model by 4000 labeled data of CIFAR-10 dataset:

python train.py --gpu <gpu_id> --n-labeled 4000 --out cifar10@4000

Monitoring training progress

tensorboard.sh --port 6006 --logdir cifar10@250

Results (Accuracy)

#Labels 250 500 1000 2000 4000
Paper 88.92 ± 0.87 90.35 ± 0.94 92.25 ± 0.32 92.97 ± 0.15 93.76 ± 0.06
This code 88.71 88.96 90.52 92.23 93.52

(Results of this code were evaluated on 1 run. Results of 5 runs with different seeds will be updated later. )

References

@article{berthelot2019mixmatch,
  title={MixMatch: A Holistic Approach to Semi-Supervised Learning},
  author={Berthelot, David and Carlini, Nicholas and Goodfellow, Ian and Papernot, Nicolas and Oliver, Avital and Raffel, Colin},
  journal={arXiv preprint arXiv:1905.02249},
  year={2019}
}