{"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/why-do-deep-convolutional-networks-generalize","title":"Why do deep convolutional networks generalize so poorly to small image transformations?","arxiv_id":"1805.12177","date":"2018-05-30","proceeding":"ICLR 2019 5","authors":["Aharon Azulay","Yair Weiss"],"abstract":"Convolutional Neural Networks (CNNs) are commonly assumed to be invariant to small image transformations: either because of the convolutional architecture or because they were trained using data augmentation. Recently, several authors have shown that this is not the case: small translations or rescalings of the input image can drastically change the network's prediction. In this paper, we quantify this phenomena and ask why neither the convolutional architecture nor data augmentation are sufficient to achieve the desired invariance. Specifically, we show that the convolutional architecture does not give invariance since architectures ignore the classical sampling theorem, and data augmentation does not give invariance because the CNNs learn to be invariant to transformations only for images that are very similar to typical images from the training set. We discuss two possible solutions to this problem: (1) antialiasing the intermediate representations and (2) increasing data augmentation and show that they provide only a partial solution at best. Taken together, our results indicate that the problem of insuring invariance to small image transformations in neural networks while preserving high accuracy remains unsolved.","url_abs":"https://arxiv.org/abs/1805.12177v4","url_pdf":"https://arxiv.org/pdf/1805.12177v4.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":"why-do-deep-convolutional-networks-generalize","repo_url":"https://github.com/AzulEye/CNN-Failures","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"why-do-deep-convolutional-networks-generalize","repo_url":"https://github.com/amerch/CIFAR100-Training","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"why-do-deep-convolutional-networks-generalize","repo_url":"https://github.com/mauriceweiler/MobiusCNNs","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"why-do-deep-convolutional-networks-generalize","repo_url":"https://github.com/premthomas/keras-image-classification","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"data-augmentation","task_name":"Data Augmentation"},{"task_slug":"object-recognition","task_name":"Object Recognition"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1805.12177","atlas_url":"https://app.syntology.ai/?focus=1805.12177","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1805.12177"}},"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/amerch/CIFAR100-Training","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mauriceweiler/MobiusCNNs","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/premthomas/keras-image-classification","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/AzulEye/CNN-Failures","reach":null}],"summary":{"ran_draft_wrong":1,"ran_fixture":2,"unverified":1},"by_repo_kind":{"official":{"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":4,"samples":[{"code_sha256_prefix":"583f9780bdd00a45","entry":"conv3x3","repo":null,"repo_kind":null,"path":null,"file_url":null,"link_basis":"identical_code_first_harvested_elsewhere","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":null,"inline_ok":false,"mcp_get_code":{"code_sha256":"583f9780bdd00a45"}},{"code_sha256_prefix":"3e9874160982448b","entry":"inpaint","repo":"AzulEye/CNN-Failures","repo_kind":"official","path":"InpaintingFunction.py","file_url":"https://github.com/AzulEye/CNN-Failures/blob/HEAD/InpaintingFunction.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3e9874160982448b"}},{"code_sha256_prefix":"d28d4143c5269a48","entry":"inpainting","repo":"AzulEye/CNN-Failures","repo_kind":"official","path":"InpaintingFunction.py","file_url":"https://github.com/AzulEye/CNN-Failures/blob/HEAD/InpaintingFunction.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d28d4143c5269a48"}},{"code_sha256_prefix":"169712a3060fe2a2","entry":"JaggedNess","repo":"AzulEye/CNN-Failures","repo_kind":"official","path":"CheckTranslationInvariance.py","file_url":"https://github.com/AzulEye/CNN-Failures/blob/HEAD/CheckTranslationInvariance.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":"169712a3060fe2a2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}