{"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/searching-for-winograd-aware-quantized","title":"Searching for Winograd-aware Quantized Networks","arxiv_id":"2002.10711","date":"2020-02-25","proceeding":null,"authors":["Javier Fernandez-Marques","Paul N. Whatmough","Andrew Mundy","Matthew Mattina"],"abstract":"Lightweight architectural designs of Convolutional Neural Networks (CNNs) together with quantization have paved the way for the deployment of demanding computer vision applications on mobile devices. Parallel to this, alternative formulations to the convolution operation such as FFT, Strassen and Winograd, have been adapted for use in CNNs offering further speedups. Winograd convolutions are the fastest known algorithm for spatially small convolutions, but exploiting their full potential comes with the burden of numerical error, rendering them unusable in quantized contexts. In this work we propose a Winograd-aware formulation of convolution layers which exposes the numerical inaccuracies introduced by the Winograd transformations to the learning of the model parameters, enabling the design of competitive quantized models without impacting model size. We also address the source of the numerical error and propose a relaxation on the form of the transformation matrices, resulting in up to 10% higher classification accuracy on CIFAR-10. Finally, we propose wiNAS, a neural architecture search (NAS) framework that jointly optimizes a given macro-architecture for accuracy and latency leveraging Winograd-aware layers. A Winograd-aware ResNet-18 optimized with wiNAS for CIFAR-10 results in 2.66x speedup compared to im2row, one of the most widely used optimized convolution implementations, with no loss in accuracy.","url_abs":"https://arxiv.org/abs/2002.10711v1","url_pdf":"https://arxiv.org/pdf/2002.10711v1.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":"searching-for-winograd-aware-quantized","repo_url":"https://github.com/jafermarq/WinogradAwareNets","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"architecture-search","task_name":"Neural Architecture Search"},{"task_slug":"quantization","task_name":"Quantization"}],"methods":[{"method_slug":"convolution","method_name":"Convolution"},{"method_slug":"lstm","method_name":"LSTM"},{"method_slug":"sigmoid-activation","method_name":"Sigmoid Activation"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"tanh-activation","method_name":"Tanh Activation"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2002.10711","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2002.10711"}},"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/jafermarq/WinogradAwareNets","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":10},"by_repo_kind":{"listed":{"samples":10,"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":"1026ca8688c8cc3b","entry":"appendDateAndTimeToString","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/utils.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1026ca8688c8cc3b"}},{"code_sha256_prefix":"1eb66ef75a3af2f5","entry":"buildQuantizationDict","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/configurator.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/configurator.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1eb66ef75a3af2f5"}},{"code_sha256_prefix":"9d72cc8a658e10f6","entry":"buildWinogradAwareDict","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/configurator.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/configurator.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9d72cc8a658e10f6"}},{"code_sha256_prefix":"200b752e8e4ff635","entry":"cifar10Transformation","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/datasets.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/datasets.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"200b752e8e4ff635"}},{"code_sha256_prefix":"4d6d7f4bc3e844db","entry":"construct_vandermonde","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/winogradUtils.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/winogradUtils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4d6d7f4bc3e844db"}},{"code_sha256_prefix":"d731abc080d48157","entry":"getCIFAR10","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/datasets.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/datasets.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d731abc080d48157"}},{"code_sha256_prefix":"ea8c6c094defc588","entry":"get_transforms","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/winogradUtils.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/winogradUtils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ea8c6c094defc588"}},{"code_sha256_prefix":"53a794fbb3986ad7","entry":"get_winograd_transforms","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/winogradUtils.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/winogradUtils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"53a794fbb3986ad7"}},{"code_sha256_prefix":"7715a0e2556f5f3b","entry":"run","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"src/configurator.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/src/configurator.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7715a0e2556f5f3b"}},{"code_sha256_prefix":"539ce8989e097d52","entry":"test","repo":"jafermarq/WinogradAwareNets","repo_kind":"listed","path":"adapt.py","file_url":"https://github.com/jafermarq/WinogradAwareNets/blob/HEAD/adapt.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"539ce8989e097d52"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}