{"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/combining-physics-and-deep-learning-to-learn","title":"Combining Physics and Deep Learning to learn Continuous-Time Dynamics Models","arxiv_id":"2110.01894","date":"2021-10-05","proceeding":null,"authors":["Michael Lutter","Jan Peters"],"abstract":"Deep learning has been widely used within learning algorithms for robotics. One disadvantage of deep networks is that these networks are black-box representations. Therefore, the learned approximations ignore the existing knowledge of physics or robotics. Especially for learning dynamics models, these black-box models are not desirable as the underlying principles are well understood and the standard deep networks can learn dynamics that violate these principles. To learn dynamics models with deep networks that guarantee physically plausible dynamics, we introduce physics-inspired deep networks that combine first principles from physics with deep learning. We incorporate Lagrangian mechanics within the model learning such that all approximated models adhere to the laws of physics and conserve energy. Deep Lagrangian Networks (DeLaN) parametrize the system energy using two networks. The parameters are obtained by minimizing the squared residual of the Euler-Lagrange differential equation. Therefore, the resulting model does not require specific knowledge of the individual system, is interpretable, and can be used as a forward, inverse, and energy model. Previously these properties were only obtained when using system identification techniques that require knowledge of the kinematic structure. We apply DeLaN to learning dynamics models and apply these models to control simulated and physical rigid body systems. The results show that the proposed approach obtains dynamics models that can be applied to physical systems for real-time control. Compared to standard deep networks, the physics-inspired models learn better models and capture the underlying structure of the dynamics.","url_abs":"https://arxiv.org/abs/2110.01894v2","url_pdf":"https://arxiv.org/pdf/2110.01894v2.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":"combining-physics-and-deep-learning-to-learn","repo_url":"https://github.com/milutter/deep_lagrangian_networks","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2110.01894","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2110.01894"}},"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/milutter/deep_lagrangian_networks","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":15},"by_repo_kind":{"official":{"samples":15,"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":"2667e258f0cdc0e2","entry":"blackbox_hamiltonian_fn","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_HNN_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_HNN_model.py","link_basis":"harvester_set","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":"2667e258f0cdc0e2"}},{"code_sha256_prefix":"562dbed30a1e11c1","entry":"dynamics_model","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_Black_Box_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_Black_Box_model.py","link_basis":"harvester_set","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":"562dbed30a1e11c1"}},{"code_sha256_prefix":"5dfc2a678c2620d3","entry":"dynamics_network","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_Black_Box_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_Black_Box_model.py","link_basis":"harvester_set","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":"5dfc2a678c2620d3"}},{"code_sha256_prefix":"0fe3cac41b65645a","entry":"explicit_euler","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_integrator.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_integrator.py","link_basis":"harvester_set","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":"0fe3cac41b65645a"}},{"code_sha256_prefix":"65b06435097a5acb","entry":"forward_model","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_Black_Box_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_Black_Box_model.py","link_basis":"harvester_set","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":"65b06435097a5acb"}},{"code_sha256_prefix":"01efd7bb4e843c0e","entry":"init_env","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/utils.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/utils.py","link_basis":"harvester_set","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":"01efd7bb4e843c0e"}},{"code_sha256_prefix":"c155e05380e491f1","entry":"kinetic_energy_fn","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_DeLaN_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_DeLaN_model.py","link_basis":"harvester_set","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":"c155e05380e491f1"}},{"code_sha256_prefix":"b844b4778c786ead","entry":"load_dataset","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/utils.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/utils.py","link_basis":"harvester_set","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":"b844b4778c786ead"}},{"code_sha256_prefix":"69ace0bd6b917694","entry":"mass_matrix_fn","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_DeLaN_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_DeLaN_model.py","link_basis":"harvester_set","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":"69ace0bd6b917694"}},{"code_sha256_prefix":"a7b80c634651d1c5","entry":"parition_params","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/utils.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/utils.py","link_basis":"harvester_set","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":"a7b80c634651d1c5"}},{"code_sha256_prefix":"40239c8a6c8e8ebf","entry":"potential_energy_fn","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_DeLaN_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_DeLaN_model.py","link_basis":"harvester_set","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":"40239c8a6c8e8ebf"}},{"code_sha256_prefix":"d679173a94867a01","entry":"runge_kutta_4","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_integrator.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_integrator.py","link_basis":"harvester_set","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":"d679173a94867a01"}},{"code_sha256_prefix":"e213a81b3bb98d9d","entry":"running_mean","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"figure_forward_model.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/figure_forward_model.py","link_basis":"harvester_set","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":"e213a81b3bb98d9d"}},{"code_sha256_prefix":"e0b816555f4359ab","entry":"symplectic_euler","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/jax_integrator.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/jax_integrator.py","link_basis":"harvester_set","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":"e0b816555f4359ab"}},{"code_sha256_prefix":"c515527842ec23ad","entry":"warning_on_one_line","repo":"milutter/deep_lagrangian_networks","repo_kind":"official","path":"deep_lagrangian_networks/replay_memory.py","file_url":"https://github.com/milutter/deep_lagrangian_networks/blob/HEAD/deep_lagrangian_networks/replay_memory.py","link_basis":"harvester_set","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":"c515527842ec23ad"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}