{"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/exodus-stable-and-efficient-training-of","title":"EXODUS: Stable and Efficient Training of Spiking Neural Networks","arxiv_id":"2205.10242","date":"2022-05-20","proceeding":null,"authors":["Felix Christian Bauer","Gregor Lenz","Saeid Haghighatshoar","Sadique Sheik"],"abstract":"Spiking Neural Networks (SNNs) are gaining significant traction in machine learning tasks where energy-efficiency is of utmost importance. Training such networks using the state-of-the-art back-propagation through time (BPTT) is, however, very time-consuming. Previous work by Shrestha and Orchard [2018] employs an efficient GPU-accelerated back-propagation algorithm called SLAYER, which speeds up training considerably. SLAYER, however, does not take into account the neuron reset mechanism while computing the gradients, which we argue to be the source of numerical instability. To counteract this, SLAYER introduces a gradient scale hyperparameter across layers, which needs manual tuning. In this paper, (i) we modify SLAYER and design an algorithm called EXODUS, that accounts for the neuron reset mechanism and applies the Implicit Function Theorem (IFT) to calculate the correct gradients (equivalent to those computed by BPTT), (ii) we eliminate the need for ad-hoc scaling of gradients, thus, reducing the training complexity tremendously, (iii) we demonstrate, via computer simulations, that EXODUS is numerically stable and achieves a comparable or better performance than SLAYER especially in various tasks with SNNs that rely on temporal features. Our code is available at https://github.com/synsense/sinabs-exodus.","url_abs":"https://arxiv.org/abs/2205.10242v1","url_pdf":"https://arxiv.org/pdf/2205.10242v1.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":"exodus-stable-and-efficient-training-of","repo_url":"https://github.com/synsense/sinabs-exodus","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":null,"task_name":"GPU"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2205.10242","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2205.10242"}},"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/synsense/sinabs-exodus","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"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":"69e1bec0ad12871f","entry":"expand_to_1d_contiguous","repo":"synsense/sinabs-exodus","repo_kind":"official","path":"sinabs/exodus/layers/lif.py","file_url":"https://github.com/synsense/sinabs-exodus/blob/HEAD/sinabs/exodus/layers/lif.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":"69e1bec0ad12871f"}},{"code_sha256_prefix":"91f6559ad4ae93d0","entry":"get_config_from_root","repo":"synsense/sinabs-exodus","repo_kind":"official","path":"versioneer.py","file_url":"https://github.com/synsense/sinabs-exodus/blob/HEAD/versioneer.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":"91f6559ad4ae93d0"}},{"code_sha256_prefix":"c55cafde08716f01","entry":"register_vcs_handler","repo":"synsense/sinabs-exodus","repo_kind":"official","path":"sinabs/exodus/_version.py","file_url":"https://github.com/synsense/sinabs-exodus/blob/HEAD/sinabs/exodus/_version.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":"c55cafde08716f01"}},{"code_sha256_prefix":"9dc618d67058e3e6","entry":"register_vcs_handler","repo":"synsense/sinabs-exodus","repo_kind":"official","path":"versioneer.py","file_url":"https://github.com/synsense/sinabs-exodus/blob/HEAD/versioneer.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":"9dc618d67058e3e6"}},{"code_sha256_prefix":"dbb37355631dabcf","entry":"run_command","repo":"synsense/sinabs-exodus","repo_kind":"official","path":"sinabs/exodus/_version.py","file_url":"https://github.com/synsense/sinabs-exodus/blob/HEAD/sinabs/exodus/_version.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":"dbb37355631dabcf"}},{"code_sha256_prefix":"5032e3b81c0fffb3","entry":"versions_from_parentdir","repo":"synsense/sinabs-exodus","repo_kind":"official","path":"sinabs/exodus/_version.py","file_url":"https://github.com/synsense/sinabs-exodus/blob/HEAD/sinabs/exodus/_version.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":"5032e3b81c0fffb3"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}