{"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/differentiable-learning-to-normalize-via","title":"Differentiable Learning-to-Normalize via Switchable Normalization","arxiv_id":"1806.10779","date":"2018-06-28","proceeding":"ICLR 2019 5","authors":["Ping Luo","Jiamin Ren","Zhanglin Peng","Ruimao Zhang","Jingyu Li"],"abstract":"We address a learning-to-normalize problem by proposing Switchable\nNormalization (SN), which learns to select different normalizers for different\nnormalization layers of a deep neural network. SN employs three distinct scopes\nto compute statistics (means and variances) including a channel, a layer, and a\nminibatch. SN switches between them by learning their importance weights in an\nend-to-end manner. It has several good properties. First, it adapts to various\nnetwork architectures and tasks (see Fig.1). Second, it is robust to a wide\nrange of batch sizes, maintaining high performance even when small minibatch is\npresented (e.g. 2 images/GPU). Third, SN does not have sensitive\nhyper-parameter, unlike group normalization that searches the number of groups\nas a hyper-parameter. Without bells and whistles, SN outperforms its\ncounterparts on various challenging benchmarks, such as ImageNet, COCO,\nCityScapes, ADE20K, and Kinetics. Analyses of SN are also presented. We hope SN\nwill help ease the usage and understand the normalization techniques in deep\nlearning. The code of SN has been made available in\nhttps://github.com/switchablenorms/.","url_abs":"http://arxiv.org/abs/1806.10779v5","url_pdf":"http://arxiv.org/pdf/1806.10779v5.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":"differentiable-learning-to-normalize-via","repo_url":"https://github.com/diogorpeixoto/SN_boxy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"differentiable-learning-to-normalize-via","repo_url":"https://github.com/switchablenorms/SwitchNorm_Segmentation","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"differentiable-learning-to-normalize-via","repo_url":"https://github.com/switchablenorms/Switchable-Normalization","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":null,"task_name":"GPU"}],"methods":[{"method_slug":"batch-normalization","method_name":"Batch Normalization"},{"method_slug":"group-normalization","method_name":"Group Normalization"},{"method_slug":"instance-normalization","method_name":"Instance Normalization"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"switchable-normalization","method_name":"Switchable Normalization"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1806.10779","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1806.10779"}},"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/switchablenorms/SwitchNorm_Segmentation","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/switchablenorms/Switchable-Normalization","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/diogorpeixoto/SN_boxy","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":13},"by_repo_kind":{"listed":{"samples":13,"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":"49ed19748e06f453","entry":"IOU","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/gen_anchors.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/gen_anchors.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":"49ed19748e06f453"}},{"code_sha256_prefix":"fccc5b5bb1fb6cca","entry":"avg_IOU","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/gen_anchors.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/gen_anchors.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":"fccc5b5bb1fb6cca"}},{"code_sha256_prefix":"780dc46447422dd0","entry":"bbox_iou","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/yolo3_one_file_to_detect_them_all.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/yolo3_one_file_to_detect_them_all.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":"780dc46447422dd0"}},{"code_sha256_prefix":"2d5961845a8f0c6c","entry":"decode_netout","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/yolo3_one_file_to_detect_them_all.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/yolo3_one_file_to_detect_them_all.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":"2d5961845a8f0c6c"}},{"code_sha256_prefix":"9a838de136e9595a","entry":"draw_boxes","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/utils/bbox.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/utils/bbox.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":"9a838de136e9595a"}},{"code_sha256_prefix":"3d727d3a4476f75b","entry":"dummy_loss","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/yolo.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/yolo.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":"3d727d3a4476f75b"}},{"code_sha256_prefix":"c539797d549ec4a4","entry":"get_color","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/utils/colors.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/utils/colors.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":"c539797d549ec4a4"}},{"code_sha256_prefix":"d0a2afca0c48b31f","entry":"multi_gpu_model","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/utils/multi_gpu_model.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/utils/multi_gpu_model.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":"d0a2afca0c48b31f"}},{"code_sha256_prefix":"1cf47a59d92760fd","entry":"parse_json_annotations","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"utils/jsonToVOC2.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/utils/jsonToVOC2.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":"1cf47a59d92760fd"}},{"code_sha256_prefix":"3ae6f4d0efbac7f2","entry":"parse_voc_annotation","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/voc.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/voc.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":"3ae6f4d0efbac7f2"}},{"code_sha256_prefix":"601ca295e001cbcc","entry":"preprocess_input","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/yolo3_one_file_to_detect_them_all.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/yolo3_one_file_to_detect_them_all.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":"601ca295e001cbcc"}},{"code_sha256_prefix":"847e9e70cb1fb450","entry":"run_kmeans","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"deps/keras_yolov3/gen_anchors.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/deps/keras_yolov3/gen_anchors.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":"847e9e70cb1fb450"}},{"code_sha256_prefix":"3bbf7b1aa89674c3","entry":"validate_path","repo":"diogorpeixoto/SN_boxy","repo_kind":"listed","path":"utils/jsonToVOC2.py","file_url":"https://github.com/diogorpeixoto/SN_boxy/blob/HEAD/utils/jsonToVOC2.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":"3bbf7b1aa89674c3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}