{"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/adamatch-a-unified-approach-to-semi","title":"AdaMatch: A Unified Approach to Semi-Supervised Learning and Domain Adaptation","arxiv_id":"2106.04732","date":"2021-06-08","proceeding":"ICLR 2022 4","authors":["David Berthelot","Rebecca Roelofs","Kihyuk Sohn","Nicholas Carlini","Alex Kurakin"],"abstract":"We extend semi-supervised learning to the problem of domain adaptation to learn significantly higher-accuracy models that train on one data distribution and test on a different one. With the goal of generality, we introduce AdaMatch, a method that unifies the tasks of unsupervised domain adaptation (UDA), semi-supervised learning (SSL), and semi-supervised domain adaptation (SSDA). In an extensive experimental study, we compare its behavior with respective state-of-the-art techniques from SSL, SSDA, and UDA on vision classification tasks. We find AdaMatch either matches or significantly exceeds the state-of-the-art in each case using the same hyper-parameters regardless of the dataset or task. For example, AdaMatch nearly doubles the accuracy compared to that of the prior state-of-the-art on the UDA task for DomainNet and even exceeds the accuracy of the prior state-of-the-art obtained with pre-training by 6.4% when AdaMatch is trained completely from scratch. Furthermore, by providing AdaMatch with just one labeled example per class from the target domain (i.e., the SSDA setting), we increase the target accuracy by an additional 6.1%, and with 5 labeled examples, by 13.6%.","url_abs":"https://arxiv.org/abs/2106.04732v2","url_pdf":"https://arxiv.org/pdf/2106.04732v2.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":"adamatch-a-unified-approach-to-semi","repo_url":"https://github.com/google-research/adamatch","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"adamatch-a-unified-approach-to-semi","repo_url":"https://github.com/smkim7-kr/AdaMatch-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"adamatch-a-unified-approach-to-semi","repo_url":"https://github.com/yizhe-ang/AdaMatch-PyTorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"adamatch-a-unified-approach-to-semi","repo_url":"https://github.com/zwenyu/UniSSDA","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"adamatch-a-unified-approach-to-semi","repo_url":"https://github.com/zysymu/AdaMatch-pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"adamatch-a-unified-approach-to-semi","repo_url":"https://github.com/sayakpaul/AdaMatch-TF","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"semi-supervised-domain-adaptation","task_name":"Semi-supervised Domain Adaptation"},{"task_slug":"unsupervised-domain-adaptation","task_name":"Unsupervised Domain Adaptation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2106.04732","atlas_url":"https://app.syntology.ai/?focus=2106.04732","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.04732"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zwenyu/UniSSDA","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/google-research/adamatch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yizhe-ang/AdaMatch-PyTorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/sayakpaul/AdaMatch-TF","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/smkim7-kr/AdaMatch-pytorch","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/zysymu/AdaMatch-pytorch","reach":null}],"summary":{"ran":11,"ran_draft_wrong":2,"ran_honours":1,"unverified":6},"by_repo_kind":{"listed":{"samples":20,"ran":14,"repositories":4}},"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":9,"samples":[{"code_sha256_prefix":"8acbdc077110ba9b","entry":"Adamatch","repo":"zysymu/AdaMatch-pytorch","repo_kind":"listed","path":"adamatch.py","file_url":"https://github.com/zysymu/AdaMatch-pytorch/blob/HEAD/adamatch.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8acbdc077110ba9b"}},{"code_sha256_prefix":"39253084070f2f95","entry":"Algorithm","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"39253084070f2f95"}},{"code_sha256_prefix":"9a932222d08965d6","entry":"Classifier","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9a932222d08965d6"}},{"code_sha256_prefix":"2b47a2ddfc97b026","entry":"GradReverse","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2b47a2ddfc97b026"}},{"code_sha256_prefix":"c9f6230a51d9b5e9","entry":"LookaheadAdam","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"src/optimizer.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/src/optimizer.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c9f6230a51d9b5e9"}},{"code_sha256_prefix":"4c0ed8a3ffc26a8b","entry":"accuracy","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"src/utils.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/src/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4c0ed8a3ffc26a8b"}},{"code_sha256_prefix":"00e569acd6b45ef0","entry":"conv3x3","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"models.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/models.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"00e569acd6b45ef0"}},{"code_sha256_prefix":"90da0a5322508429","entry":"cosine_schedule","repo":"yizhe-ang/AdaMatch-PyTorch","repo_kind":"listed","path":"trainers/utils.py","file_url":"https://github.com/yizhe-ang/AdaMatch-PyTorch/blob/HEAD/trainers/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"90da0a5322508429"}},{"code_sha256_prefix":"568eece08bf61ac5","entry":"grad_reverse","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"568eece08bf61ac5"}},{"code_sha256_prefix":"f069b56fa07b8d15","entry":"inv_lr_scheduler","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f069b56fa07b8d15"}},{"code_sha256_prefix":"33836088c3046a9e","entry":"load_model","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"models.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/models.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"33836088c3046a9e"}},{"code_sha256_prefix":"69813457472b3348","entry":"make_scheduler","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"src/scheduler.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/src/scheduler.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"69813457472b3348"}},{"code_sha256_prefix":"08c87afb301070b5","entry":"pretrain","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"08c87afb301070b5"}},{"code_sha256_prefix":"33cf5d0c4a76211f","entry":"unnormalize_img","repo":"yizhe-ang/AdaMatch-PyTorch","repo_kind":"listed","path":"trainers/utils.py","file_url":"https://github.com/yizhe-ang/AdaMatch-PyTorch/blob/HEAD/trainers/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"33cf5d0c4a76211f"}},{"code_sha256_prefix":"4fcf58e0e0f0df7d","entry":"AdaMatch","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4fcf58e0e0f0df7d"}},{"code_sha256_prefix":"3d16ce208399a304","entry":"AdaMatch_loss","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3d16ce208399a304"}},{"code_sha256_prefix":"0f150f7b3d28baf0","entry":"Over9000","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"src/optimizer.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/src/optimizer.py","link_basis":"harvester_set","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":"0f150f7b3d28baf0"}},{"code_sha256_prefix":"6066adc7a58afde6","entry":"get_logger","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"src/logger.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/src/logger.py","link_basis":"harvester_set","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":"6066adc7a58afde6"}},{"code_sha256_prefix":"0c2325bd115425e9","entry":"make_optimizer","repo":"smkim7-kr/AdaMatch-pytorch","repo_kind":"listed","path":"src/optimizer.py","file_url":"https://github.com/smkim7-kr/AdaMatch-pytorch/blob/HEAD/src/optimizer.py","link_basis":"harvester_set","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":"0c2325bd115425e9"}},{"code_sha256_prefix":"fad33bd48f70436d","entry":"weights_init","repo":"zwenyu/UniSSDA","repo_kind":"listed","path":"algorithms/algorithms.py","file_url":"https://github.com/zwenyu/UniSSDA/blob/HEAD/algorithms/algorithms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fad33bd48f70436d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}