{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/flexmatch-boosting-semi-supervised-learning","title":"FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling","arxiv_id":"2110.08263","date":"2021-10-15","proceeding":"NeurIPS 2021 12","authors":["BoWen Zhang","Yidong Wang","Wenxin Hou","Hao Wu","Jindong Wang","Manabu Okumura","Takahiro Shinozaki"],"abstract":"The recently proposed FixMatch achieved state-of-the-art results on most semi-supervised learning (SSL) benchmarks. However, like other modern SSL algorithms, FixMatch uses a pre-defined constant threshold for all classes to select unlabeled data that contribute to the training, thus failing to consider different learning status and learning difficulties of different classes. To address this issue, we propose Curriculum Pseudo Labeling (CPL), a curriculum learning approach to leverage unlabeled data according to the model's learning status. The core of CPL is to flexibly adjust thresholds for different classes at each time step to let pass informative unlabeled data and their pseudo labels. CPL does not introduce additional parameters or computations (forward or backward propagation). We apply CPL to FixMatch and call our improved algorithm FlexMatch. FlexMatch achieves state-of-the-art performance on a variety of SSL benchmarks, with especially strong performances when the labeled data are extremely limited or when the task is challenging. For example, FlexMatch achieves 13.96% and 18.96% error rate reduction over FixMatch on CIFAR-100 and STL-10 datasets respectively, when there are only 4 labels per class. CPL also significantly boosts the convergence speed, e.g., FlexMatch can use only 1/5 training time of FixMatch to achieve even better performance. Furthermore, we show that CPL can be easily adapted to other SSL algorithms and remarkably improve their performances. We open-source our code at https://github.com/TorchSSL/TorchSSL.","url_abs":"https://arxiv.org/abs/2110.08263v3","url_pdf":"https://arxiv.org/pdf/2110.08263v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"flexmatch-boosting-semi-supervised-learning","repo_url":"https://github.com/torchssl/torchssl","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"flexmatch-boosting-semi-supervised-learning","repo_url":"https://github.com/beandkay/sequencematch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"semi-supervised-image-classification","task_name":"Semi-Supervised Image Classification"}],"methods":[{"method_slug":"fixmatch","method_name":"FixMatch"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/semi-supervised-image-classification-on-cifar-6","task":"Semi-Supervised Image Classification","dataset":"CIFAR-10, 250 Labels","model":"FlexMatch","rank_in_archive_order":10,"of":27,"metrics":{"Percentage error":"4.8±0.06"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-image-classification-on-cifar-7","task":"Semi-Supervised Image Classification","dataset":"CIFAR-10, 40 Labels","model":"FlexMatch","rank_in_archive_order":5,"of":21,"metrics":{"Percentage error":"4.99±0.16"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-image-classification-on-cifar","task":"Semi-Supervised Image Classification","dataset":"CIFAR-10, 4000 Labels","model":"FlexMatch","rank_in_archive_order":15,"of":49,"metrics":{"Percentage error":"4.19±0.01"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-image-classification-on-cifar-9","task":"Semi-Supervised Image Classification","dataset":"CIFAR-100, 2500 Labels","model":"FlexMatch","rank_in_archive_order":10,"of":16,"metrics":{"Percentage error":"26.49±0.20"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-image-classification-on-cifar-8","task":"Semi-Supervised Image Classification","dataset":"CIFAR-100, 400 Labels","model":"FlexMatch","rank_in_archive_order":12,"of":21,"metrics":{"Percentage error":"39.94±1.62"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-image-classification-on-2","task":"Semi-Supervised Image Classification","dataset":"ImageNet - 10% labeled data","model":"FlexMatch","rank_in_archive_order":45,"of":75,"metrics":{"Top 1 Accuracy":"64.79%","Top 5 Accuracy":"86.04%"},"uses_additional_data":false},{"leaderboard":"/sota/semi-supervised-image-classification-on-cifar-2","task":"Semi-Supervised Image Classification","dataset":"cifar-100, 10000 Labels","model":"FlexMatch","rank_in_archive_order":12,"of":29,"metrics":{"Percentage error":"21.90±0.15"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2110.08263","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2110.08263"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/TorchSSL/TorchSSL","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/torchssl/torchssl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/beandkay/sequencematch","reach":null}],"summary":{"ran_fixture":3,"ran_violates":1,"unverified":2},"by_repo_kind":{"official":{"samples":3,"ran":2,"repositories":1},"listed":{"samples":3,"ran":2,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"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"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"1b2ef05b7424074f","entry":"ce_loss","repo":"beandkay/sequencematch","repo_kind":"listed","path":"models/flexmatch/flexmatch.py","file_url":"https://github.com/beandkay/sequencematch/blob/HEAD/models/flexmatch/flexmatch.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1b2ef05b7424074f"}},{"code_sha256_prefix":"8f89311db3715e3c","entry":"consistency_loss","repo":"torchssl/torchssl","repo_kind":"official","path":"models/flexmatch/flexmatch.py","file_url":"https://github.com/torchssl/torchssl/blob/HEAD/models/flexmatch/flexmatch.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8f89311db3715e3c"}},{"code_sha256_prefix":"45956241e5216b30","entry":"consistency_loss","repo":"beandkay/sequencematch","repo_kind":"listed","path":"models/flexmatch/flexmatch.py","file_url":"https://github.com/beandkay/sequencematch/blob/HEAD/models/flexmatch/flexmatch.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"45956241e5216b30"}},{"code_sha256_prefix":"8605dc8a088f3db8","entry":"str2bool","repo":"torchssl/torchssl","repo_kind":"official","path":"flexmatch.py","file_url":"https://github.com/torchssl/torchssl/blob/HEAD/flexmatch.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8605dc8a088f3db8"}},{"code_sha256_prefix":"ab70368712a20243","entry":"FlexMatch","repo":"torchssl/torchssl","repo_kind":"official","path":"models/flexmatch/flexmatch.py","file_url":"https://github.com/torchssl/torchssl/blob/HEAD/models/flexmatch/flexmatch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ab70368712a20243"}},{"code_sha256_prefix":"865b358a0b1a7755","entry":"FlexMatch","repo":"beandkay/sequencematch","repo_kind":"listed","path":"models/flexmatch/flexmatch.py","file_url":"https://github.com/beandkay/sequencematch/blob/HEAD/models/flexmatch/flexmatch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"865b358a0b1a7755"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}