{"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/are-neural-nets-modular-inspecting-functional-1","title":"Are Neural Nets Modular? Inspecting Functional Modularity Through Differentiable Weight Masks","arxiv_id":"2010.02066","date":"2020-10-05","proceeding":"ICLR 2021 1","authors":["Róbert Csordás","Sjoerd van Steenkiste","Jürgen Schmidhuber"],"abstract":"Neural networks (NNs) whose subnetworks implement reusable functions are expected to offer numerous advantages, including compositionality through efficient recombination of functional building blocks, interpretability, preventing catastrophic interference, etc. Understanding if and how NNs are modular could provide insights into how to improve them. Current inspection methods, however, fail to link modules to their functionality. In this paper, we present a novel method based on learning binary weight masks to identify individual weights and subnets responsible for specific functions. Using this powerful tool, we contribute an extensive study of emerging modularity in NNs that covers several standard architectures and datasets. We demonstrate how common NNs fail to reuse submodules and offer new insights into the related issue of systematic generalization on language tasks.","url_abs":"https://arxiv.org/abs/2010.02066v3","url_pdf":"https://arxiv.org/pdf/2010.02066v3.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":"are-neural-nets-modular-inspecting-functional-1","repo_url":"https://github.com/RobertCsordas/modules","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"systematic-generalization","task_name":"Systematic Generalization"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2010.02066","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2010.02066"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/RobertCsordas/modules","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":7,"ran":0,"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":"519b27367a1c7203","entry":"batch_conv2d","repo":"RobertCsordas/modules","repo_kind":"official","path":"layers/batch_ops.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/layers/batch_ops.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"519b27367a1c7203"}},{"code_sha256_prefix":"7f4cb5e3ea639f9c","entry":"batch_elementwise","repo":"RobertCsordas/modules","repo_kind":"official","path":"layers/batch_ops.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/layers/batch_ops.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7f4cb5e3ea639f9c"}},{"code_sha256_prefix":"60472091a1b16baa","entry":"batch_matmul","repo":"RobertCsordas/modules","repo_kind":"official","path":"layers/batch_ops.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/layers/batch_ops.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"60472091a1b16baa"}},{"code_sha256_prefix":"3e2ac3b4c47e296d","entry":"data_parallel","repo":"RobertCsordas/modules","repo_kind":"official","path":"data_parallel.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/data_parallel.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"3e2ac3b4c47e296d"}},{"code_sha256_prefix":"f2e6cecc7f252fe2","entry":"gen_palette","repo":"RobertCsordas/modules","repo_kind":"official","path":"draw.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/draw.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"f2e6cecc7f252fe2"}},{"code_sha256_prefix":"c670668324918e49","entry":"nearest_scale","repo":"RobertCsordas/modules","repo_kind":"official","path":"draw.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/draw.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"c670668324918e49"}},{"code_sha256_prefix":"25dc45eabb3ed5c6","entry":"to_valid_image_format","repo":"RobertCsordas/modules","repo_kind":"official","path":"draw.py","file_url":"https://github.com/RobertCsordas/modules/blob/HEAD/draw.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"25dc45eabb3ed5c6"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}