Papers › FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence

FixMatch: Simplifying Semi-Supervised Learning with Consistency and Confidence

21 Jan 2020NeurIPS 2020 12arXiv:2001.07685archive 2025-07-28

Kihyuk Sohn, David Berthelot, Chun-Liang Li, Zizhao Zhang, Nicholas Carlini, Ekin D. Cubuk, Alex Kurakin, Han Zhang, Colin Raffel

Semi-supervised learning (SSL) provides an effective means of leveraging unlabeled data to improve a model's performance. In this paper, we demonstrate the power of a simple combination of two common SSL methods: consistency regularization and pseudo-labeling. Our algorithm, FixMatch, first generates pseudo-labels using the model's predictions on weakly-augmented unlabeled images. For a given image, the pseudo-label is only retained if the model produces a high-confidence prediction. The model is then trained to predict the pseudo-label when fed a strongly-augmented version of the same image. Despite its simplicity, we show that FixMatch achieves state-of-the-art performance across a variety of standard semi-supervised learning benchmarks, including 94.93% accuracy on CIFAR-10 with 250 labels and 88.61% accuracy with 40 -- just 4 labels per class. Since FixMatch bears many similarities to existing SSL methods that achieve worse performance, we carry out an extensive ablation study to tease apart the experimental factors that are most important to FixMatch's success. We make our code available at https://github.com/google-research/fixmatch.

PaperPDFConference PDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2001.07685")

Code

Syntology Ran 50 of 74 code samples harvested from 18 repositories linked to this paper; 24 have no recorded run. Of those that ran: 3 ran · honoured contract; 2 ran · violated contract; 12 ran · our draft was wrong; 13 ran · fixture could not drive it; 20 ran with no contract checked.

By repository: community (archive-listed): 74 samples from 18 repositories, 50 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

26 repositories listed; official and paper-mentioned ones first.

google-research/fixmatch officialmentioned in papermentioned on GitHubtfApache-2.0 report
A-Telfer/AugKey mentioned on GitHub report
AhmadQasim/FixMatch mentioned on GitHubpytorch report
Celiali/FixMatch mentioned on GitHubpytorch report
CoinCheung/fixmatch mentioned on GitHubpytorch report
CoinCheung/fixmatch-pytorch mentioned on GitHubpytorch report
DonghwanKIM0101/CS492I_CV mentioned on GitHubpytorch report
KaiyangZhou/ssdg-benchmark mentioned on GitHubpytorchMIT report
LeeDoYup/FixMatch-pytorch mentioned on GitHubpytorch report
OFRIN/Tensorflow_FixMatch mentioned on GitHubtf report
S-HuaBomb/FixMatch-Paddle mentioned on GitHubpaddleApache-2.0 report
SaraAmd/Semi-Supervised-Learning mentioned on GitHubpytorch report
Trayan7/FixMatch-with-Soft-Labels mentioned on GitHubtfApache-2.0 report
Zhongying-Deng/NorMatch mentioned on GitHubpytorch report
fbuchert/fixmatch-pytorch mentioned on GitHubpytorch report
gomezzz/MSMatch mentioned on GitHubpytorch report
gomezzz/distmsmatch mentioned on GitHubpytorch report
google-research/crest mentioned on GitHubtf report
johnchenresearch/SSL mentioned on GitHubtfApache-2.0 report
kekmodel/FixMatch-pytorch mentioned on GitHubpytorch report
phanav/fixmatch-fastai mentioned on GitHubpytorch report
valencebond/FixMatch_pytorch mentioned on GitHubpytorch report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

74 samples harvested; 50 ran; 3 honoured the contract we drafted; 24 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

3ran · honoured contract
2ran · violated contract
12ran · our draft was wrong
13ran · fixture could not drive it
20ran
24unverified

Licence: 14 of the 74 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 18 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

mish kekmodel/FixMatch-pytorch/models/wideresnet.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · 48dececd48e901d2 · report
AutoContrast S-HuaBomb/FixMatch-Paddle/dataset/randaugment.py community (archive-listed) ran Apache-2.0 (permissive) · c6e7c3451c85404f · report
AverageMeter ptrckhmmr/learning-to-defer-with-limited-expert-predictions/Semi-Supervised/Train_FixMatch.py community (archive-listed) ran no licence file found · pointer only · 2c90584bcf844d28 · report
BasicBlockPreAct valencebond/FixMatch_pytorch/models/model.py community (archive-listed) ran · metamorphic tier: deterministic fingerprinted MIT (permissive) · 735c6ea4d3188cf3 · report
BasicBlockPreAct CoinCheung/fixmatch/model.py community (archive-listed) ran fingerprinted MIT (permissive) · 8d3a0f01f7775c34 · report
Brightness kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · f82e12f0d695e01b · report
Brightness S-HuaBomb/FixMatch-Paddle/dataset/randaugment.py community (archive-listed) ran Apache-2.0 (permissive) · 0d1a8d6ce2015fc7 · report
Color S-HuaBomb/FixMatch-Paddle/dataset/randaugment.py community (archive-listed) ran Apache-2.0 (permissive) · 32cb3f5760fa593e · report
ConsistencyRegularization SaraAmd/Semi-Supervised-Learning/ssl_lib/algs/consistency.py community (archive-listed) ran · metamorphic tier: deterministic fingerprinted no licence file found · pointer only · 3476a989bf303448 · report
Contrast kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 3a6db236d683df14 · report
Equalize kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran MIT (permissive) · b6210b47d844e910 · report
FixMatch amazon-research/exponential-moving-average-normalization/models/fixmatch.py community (archive-listed) ran · metamorphic tier: deterministic fingerprinted no licence file found · pointer only · f97994492ca55ef4 · report
FixMatch LeeDoYup/FixMatch-pytorch/models/fixmatch/fixmatch.py community (archive-listed) ran MIT (permissive) · 95de992b4cf43fd7 · report
FixMatch gomezzz/distmsmatch/MSMatch/models/fixmatch/FixMatch.py community (archive-listed) ran MIT (permissive) · 18865f52ae76d33f · report
Identity kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · violated contract fingerprinted MIT (permissive) · 0847c9a3c04c392e · report
OhemCrossEntropy2D miquelmarti/DenseFixMatch/ssl_methods/fixmatch.py community (archive-listed) ran no licence file found · pointer only · 657ea9d40ca81745 · report
Posterize kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 99a25ff737f67a63 · report
RandAugmentMC AhmadQasim/FixMatch/dataset/randaugment.py community (archive-listed) ran MIT (permissive) · 4e833a8fd83394d8 · report
ResNet amazon-research/exponential-moving-average-normalization/models/fixmatch.py community (archive-listed) ran · metamorphic tier: deterministic fingerprinted no licence file found · pointer only · 88b25a8a9dc5f114 · report
Rotate kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · db8a01288db8d302 · report
Sharpness kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 6d5a3435d35550b8 · report
ShearX kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · c069bca31b82aa2c · report
ShearY kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 47ddf827c80f0e32 · report
TranslateX kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 623b2503761b36c6 · report
TranslateY kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · our draft was wrong MIT (permissive) · c34cf3418c8a3bb9 · report
WideResNet OFRIN/Tensorflow_FixMatch/core/backbone/wideresnet.py community (archive-listed) ran no licence file found · pointer only · b16158758833e962 · report
WideResnet valencebond/FixMatch_pytorch/models/model.py community (archive-listed) ran · metamorphic tier: deterministic fingerprinted MIT (permissive) · cee3484c4606263e · report
WideResnet CoinCheung/fixmatch/model.py community (archive-listed) ran fingerprinted MIT (permissive) · b8e244cd7c2d12ef · report
WideResnetBackbone valencebond/FixMatch_pytorch/models/model.py community (archive-listed) ran · metamorphic tier: deterministic fingerprinted MIT (permissive) · 6986978358272b46 · report
WideResnetBackbone CoinCheung/fixmatch/model.py community (archive-listed) ran fingerprinted MIT (permissive) · 03b0c8a89d29142b · report
_float_parameter kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · honoured contract fingerprinted MIT (permissive) · c0d914f7e98a27ad · report
_int_parameter kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran · honoured contract fingerprinted MIT (permissive) · 895dd68f0abd14a2 · report
autocontrast_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 78ca1debd9c4ed87 · report
ce_loss gomezzz/MSMatch/models/fixmatch/fixmatch.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 9723f46ec1689a37 · report
consistency_loss LeeDoYup/FixMatch-pytorch/models/fixmatch/fixmatch.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 4a5f8edc558790c2 · report
consistency_loss gomezzz/distmsmatch/MSMatch/models/fixmatch/FixMatch.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 5efbd3f44ce7dcf5 · report
consistency_loss gomezzz/MSMatch/models/fixmatch/fixmatch.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · cc357ff67b149646 · report
contrast_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · violated contract MIT (permissive) · 3cbade2baaefb1c2 · report
cross_entropy_loss gomezzz/distmsmatch/MSMatch/models/fixmatch/FixMatch.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 774112e52d064668 · report
cutout_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · 8a873e1fbc0db2dd · report
equalize_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 4c53169f63a1fcef · report
fixmatch_augment_pool kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) ran MIT (permissive) · e34c59d1eb6d2adb · report
get_weak_augmentation fbuchert/fixmatch-pytorch/augmentation/augmentations.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 159f99b81bc70ebc · report
sharpening SaraAmd/Semi-Supervised-Learning/ssl_lib/algs/consistency.py community (archive-listed) ran · our draft was wrong fingerprinted no licence file found · pointer only · c52f15cee62d6c7a · report
sharpness_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it MIT (permissive) · 8d81faa31f390340 · report
shear_x_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · 19aacbdbdaa4747b · report
shear_y_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · 6514adf4f71311fc · report
tempereture_softmax SaraAmd/Semi-Supervised-Learning/ssl_lib/algs/consistency.py community (archive-listed) ran · honoured contract fingerprinted no licence file found · pointer only · 75653ad24ddcda46 · report
translate_x_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · adebf590ca9fbf8b · report
translate_y_func CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) ran · fixture could not drive it fingerprinted MIT (permissive) · 24b6eed27679e385 · report
AutoContrast kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) unverified MIT (permissive) · 338c2ab566a96a45 · report
CTAugment Celiali/FixMatch/augmentations/ctaugment.py community (archive-listed) unverified MIT (permissive) · d177a39181ef07d4 · report
Color kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) unverified MIT (permissive) · fbe48c6053d5de3b · report
CutoutAbs AhmadQasim/FixMatch/dataset/randaugment.py community (archive-listed) unverified MIT (permissive) · f4c8609e68ec56f7 · report
FixMatch miquelmarti/DenseFixMatch/ssl_methods/fixmatch.py community (archive-listed) unverified no licence file found · pointer only · 2a1f6b2401f82e41 · report
FixMatch gomezzz/MSMatch/models/fixmatch/fixmatch.py community (archive-listed) unverified MIT (permissive) · bdc089534fcd34d6 · report
MultiLoss miquelmarti/DenseFixMatch/ssl_methods/fixmatch.py community (archive-listed) unverified no licence file found · pointer only · 980cb93dec539bfb · report
RandomAugment CoinCheung/fixmatch-pytorch/randaugment.py community (archive-listed) unverified MIT (permissive) · e996de42bfddf014 · report
SSLModule miquelmarti/DenseFixMatch/ssl_methods/fixmatch.py community (archive-listed) unverified no licence file found · pointer only · 15c3f5ae1a117ead · report
Solarize kekmodel/FixMatch-pytorch/dataset/randaugment.py community (archive-listed) unverified MIT (permissive) · 38a40a5989234d66 · report
accuracy gomezzz/distmsmatch/MSMatch/models/fixmatch/FixMatch.py community (archive-listed) unverified MIT (permissive) · 970c51bd6e14501c · report
build_wideresnet kekmodel/FixMatch-pytorch/models/wideresnet.py community (archive-listed) unverified MIT (permissive) · 73e41df974d19846 · report
calculate_gain S-HuaBomb/FixMatch-Paddle/models/initializers.py community (archive-listed) unverified Apache-2.0 (permissive) · 96901d00bcfc5b79 · report
ema_model_update ptrckhmmr/learning-to-defer-with-limited-expert-predictions/Semi-Supervised/Train_FixMatch.py community (archive-listed) unverified no licence file found · pointer only · dbdbabf6276becac · report
entropy_from_logits johnchenresearch/SSL/libml/layers.py community (archive-listed) unverified Apache-2.0 (permissive) · 0802d913d5d3694d · report
entropy_penalty johnchenresearch/SSL/libml/layers.py community (archive-listed) unverified Apache-2.0 (permissive) · d5592d7541ebcb31 · report
get_hparams johnchenresearch/SSL/imagenet/training.py community (archive-listed) unverified Apache-2.0 (permissive) · d418bfeffed76d00 · report
log_fixmatch miquelmarti/DenseFixMatch/ssl_methods/fixmatch.py community (archive-listed) unverified no licence file found · pointer only · b9973e2e02f8fc7f · report
safe_mean johnchenresearch/SSL/imagenet/training.py community (archive-listed) unverified Apache-2.0 (permissive) · e220f362daa9561f · report
smart_shape johnchenresearch/SSL/libml/layers.py community (archive-listed) unverified Apache-2.0 (permissive) · 5d8684fa279a5f80 · report
test Zhongying-Deng/NorMatch/train_fixmatch.py community (archive-listed) unverified MIT (permissive) · e516133a9e28be90 · report
train Zhongying-Deng/NorMatch/train_fixmatch.py community (archive-listed) unverified MIT (permissive) · 92bbaed54dcdae65 · report
train_one_epoch ptrckhmmr/learning-to-defer-with-limited-expert-predictions/Semi-Supervised/Train_FixMatch.py community (archive-listed) unverified no licence file found · pointer only · 0db7aa7734f05609 · report
x_u_split S-HuaBomb/FixMatch-Paddle/dataset/cifar.py community (archive-listed) unverified Apache-2.0 (permissive) · 26e39e7c49b447ad · report

Tasks

Image ClassificationPseudo LabelSemi-Supervised Image Classification

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Semi-Supervised Image Classification CIFAR-10, 100 Labels (OpenSet, 6/4) FixMatch Accuracy 70.2 #4 of 4 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-10, 250 Labels FixMatch (CTA) Percentage error 5.07±0.33 #16 of 27 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-10, 40 Labels FixMatch (CTA) Percentage error 11.39±3.35 #18 of 21 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-10, 400 Labels (OpenSet, 6/4) FixMatch Accuracy 83.7 #4 of 4 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-10, 4000 Labels FixMatch (CTA) Percentage error 4.31 #18 of 49 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-10, 50 Labels (OpenSet, 6/4) FixMatch Accuracy 56.8 #4 of 4 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-100, 2500 Labels FixMatch (CTA, WRN-28-8) Percentage error 28.64±0.24 #16 of 16 Archive leaderboard report
Semi-Supervised Image Classification CIFAR-100, 400 Labels FixMatch (CTA) Percentage error 49.95±3.01 #21 of 21 Archive leaderboard report
Semi-Supervised Image Classification ImageNet - 10% labeled data FixMatch Top 5 Accuracy 89.13% #54 of 75 Archive leaderboard report
Semi-Supervised Image Classification STL-10, 1000 Labels FixMatch (CTA) Accuracy 94.83±0.63 #6 of 13 Archive leaderboard report
Semi-Supervised Image Classification SVHN, 1000 labels FixMatch (CTA) Accuracy 97.64±0.19 #3 of 17 Archive leaderboard report
Semi-Supervised Image Classification SVHN, 40 Labels FixMatch (CTA) Percentage error 7.65±7.65 #4 of 5 Archive leaderboard report
Semi-Supervised Image Classification cifar-100, 10000 Labels FixMatch (RA, WRN-28-8) Percentage error 22.6 #16 of 29 Archive leaderboard report
Semi-Supervised Image Classification cifar-100, 10000 Labels FixMatch (CTA, WRN-28-8) Percentage error 23.18±0.11 #19 of 29 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

Methods

Introduced by this paper: FixMatch

FixMatch

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections