{"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/learning-nonlinear-projections-for-reduced","title":"Learning Nonlinear Projections for Reduced-Order Modeling of Dynamical Systems using Constrained Autoencoders","arxiv_id":"2307.15288","date":"2023-07-28","proceeding":null,"authors":["Samuel E. Otto","Gregory R. Macchio","Clarence W. Rowley"],"abstract":"Recently developed reduced-order modeling techniques aim to approximate nonlinear dynamical systems on low-dimensional manifolds learned from data. This is an effective approach for modeling dynamics in a post-transient regime where the effects of initial conditions and other disturbances have decayed. However, modeling transient dynamics near an underlying manifold, as needed for real-time control and forecasting applications, is complicated by the effects of fast dynamics and nonnormal sensitivity mechanisms. To begin to address these issues, we introduce a parametric class of nonlinear projections described by constrained autoencoder neural networks in which both the manifold and the projection fibers are learned from data. Our architecture uses invertible activation functions and biorthogonal weight matrices to ensure that the encoder is a left inverse of the decoder. We also introduce new dynamics-aware cost functions that promote learning of oblique projection fibers that account for fast dynamics and nonnormality. To demonstrate these methods and the specific challenges they address, we provide a detailed case study of a three-state model of vortex shedding in the wake of a bluff body immersed in a fluid, which has a two-dimensional slow manifold that can be computed analytically. In anticipation of future applications to high-dimensional systems, we also propose several techniques for constructing computationally efficient reduced-order models using our proposed nonlinear projection framework. This includes a novel sparsity-promoting penalty for the encoder that avoids detrimental weight matrix shrinkage via computation on the Grassmann manifold.","url_abs":"https://arxiv.org/abs/2307.15288v2","url_pdf":"https://arxiv.org/pdf/2307.15288v2.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":"learning-nonlinear-projections-for-reduced","repo_url":"https://github.com/grmacchio/romnet_chaos2023","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2307.15288","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2307.15288"}},"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/grmacchio/romnet_chaos2023","reach":{"status":"ok"}}],"summary":{"ran":6},"by_repo_kind":{"official":{"samples":6,"ran":6,"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":6,"samples":[{"code_sha256_prefix":"0289d2449d0d9801","entry":"SLReLU","repo":"grmacchio/romnet_chaos2023","repo_kind":"official","path":"romnet/autoencoder.py","file_url":"https://github.com/grmacchio/romnet_chaos2023/blob/HEAD/romnet/autoencoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0289d2449d0d9801"}},{"code_sha256_prefix":"60eeedd78fb078df","entry":"SReLU","repo":"grmacchio/romnet_chaos2023","repo_kind":"official","path":"romnet/autoencoder.py","file_url":"https://github.com/grmacchio/romnet_chaos2023/blob/HEAD/romnet/autoencoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"60eeedd78fb078df"}},{"code_sha256_prefix":"e9479fd9dc8054fb","entry":"d_SReLU","repo":"grmacchio/romnet_chaos2023","repo_kind":"official","path":"romnet/autoencoder.py","file_url":"https://github.com/grmacchio/romnet_chaos2023/blob/HEAD/romnet/autoencoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e9479fd9dc8054fb"}},{"code_sha256_prefix":"752898c65d9fa8ba","entry":"herdif","repo":"grmacchio/romnet_chaos2023","repo_kind":"official","path":"romnet/models/cgl.py","file_url":"https://github.com/grmacchio/romnet_chaos2023/blob/HEAD/romnet/models/cgl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"752898c65d9fa8ba"}},{"code_sha256_prefix":"986b1636c8ad6999","entry":"load","repo":"grmacchio/romnet_chaos2023","repo_kind":"official","path":"romnet/sample.py","file_url":"https://github.com/grmacchio/romnet_chaos2023/blob/HEAD/romnet/sample.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"986b1636c8ad6999"}},{"code_sha256_prefix":"1bc8fcaf62e53dc9","entry":"psi_fun","repo":"grmacchio/romnet_chaos2023","repo_kind":"official","path":"romnet/models/cgl.py","file_url":"https://github.com/grmacchio/romnet_chaos2023/blob/HEAD/romnet/models/cgl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1bc8fcaf62e53dc9"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}