{"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/neural-networks-on-microcontrollers-saving","title":"Neural networks on microcontrollers: saving memory at inference via operator reordering","arxiv_id":"1910.05110","date":"2019-10-02","proceeding":null,"authors":["Edgar Liberis","Nicholas D. Lane"],"abstract":"Designing deep learning models for highly-constrained hardware would allow imbuing many edge devices with intelligence. Microcontrollers (MCUs) are an attractive platform for building smart devices due to their low cost, wide availability, and modest power usage. However, they lack the computational resources to run neural networks as straightforwardly as mobile or server platforms, which necessitates changes to the network architecture and the inference software. In this work, we discuss the deployment and memory concerns of neural networks on MCUs and present a way of saving memory by changing the execution order of the network's operators, which is orthogonal to other compression methods. We publish a tool for reordering operators of TensorFlow Lite models and demonstrate its utility by sufficiently reducing the memory footprint of a CNN to deploy it on an MCU with 512KB SRAM.","url_abs":"https://arxiv.org/abs/1910.05110v2","url_pdf":"https://arxiv.org/pdf/1910.05110v2.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":"neural-networks-on-microcontrollers-saving","repo_url":"https://github.com/oxmlsys/tflite-tools","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1910.05110","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1910.05110"}},"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/oxmlsys/tflite-tools","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":14},"by_repo_kind":{"official":{"samples":14,"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":"aa810b70bad0e948","entry":"AbsOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/AbsOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/AbsOptions.py","link_basis":"first_harvest_node","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":"aa810b70bad0e948"}},{"code_sha256_prefix":"0ddef8025e31d92a","entry":"AddNOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/AddNOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/AddNOptions.py","link_basis":"first_harvest_node","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":"0ddef8025e31d92a"}},{"code_sha256_prefix":"1ffb75597fc7bd2b","entry":"AddOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/AddOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/AddOptions.py","link_basis":"first_harvest_node","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":"1ffb75597fc7bd2b"}},{"code_sha256_prefix":"b81bbd359f30bbf0","entry":"ArgMaxOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/ArgMaxOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/ArgMaxOptions.py","link_basis":"first_harvest_node","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":"b81bbd359f30bbf0"}},{"code_sha256_prefix":"6de21b13beace7bc","entry":"ArgMinOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/ArgMinOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/ArgMinOptions.py","link_basis":"first_harvest_node","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":"6de21b13beace7bc"}},{"code_sha256_prefix":"2466f15207cc39b0","entry":"BatchToSpaceNDOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/BatchToSpaceNDOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/BatchToSpaceNDOptions.py","link_basis":"first_harvest_node","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":"2466f15207cc39b0"}},{"code_sha256_prefix":"0b1c80069a231389","entry":"BidirectionalSequenceLSTMOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/BidirectionalSequenceLSTMOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/BidirectionalSequenceLSTMOptions.py","link_basis":"first_harvest_node","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":"0b1c80069a231389"}},{"code_sha256_prefix":"6c7b30b439c8aba3","entry":"BidirectionalSequenceRNNOptionsEnd","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/BidirectionalSequenceRNNOptions.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/BidirectionalSequenceRNNOptions.py","link_basis":"first_harvest_node","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":"6c7b30b439c8aba3"}},{"code_sha256_prefix":"cbcbf947a3c73834","entry":"ModelStartBuffersVector","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/Model.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/Model.py","link_basis":"first_harvest_node","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":"cbcbf947a3c73834"}},{"code_sha256_prefix":"8edfabcc3bbb4d87","entry":"ModelStartOperatorCodesVector","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/Model.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/Model.py","link_basis":"first_harvest_node","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":"8edfabcc3bbb4d87"}},{"code_sha256_prefix":"695cc78898a40eac","entry":"ModelStartSubgraphsVector","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite/Model.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite/Model.py","link_basis":"first_harvest_node","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":"695cc78898a40eac"}},{"code_sha256_prefix":"4a98be502c8d5284","entry":"cluster_weights","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite_model.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite_model.py","link_basis":"first_harvest_node","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":"4a98be502c8d5284"}},{"code_sha256_prefix":"a04c650fa9cc9971","entry":"get_buffer_as_numpy","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite_model.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite_model.py","link_basis":"first_harvest_node","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":"a04c650fa9cc9971"}},{"code_sha256_prefix":"ee1162f08109ee09","entry":"get_buffer_element_size","repo":"oxmlsys/tflite-tools","repo_kind":"official","path":"tflite_tools/tflite_model.py","file_url":"https://github.com/oxmlsys/tflite-tools/blob/HEAD/tflite_tools/tflite_model.py","link_basis":"first_harvest_node","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":"ee1162f08109ee09"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}