{"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/half-inverse-gradients-for-physical-deep-1","title":"Half-Inverse Gradients for Physical Deep Learning","arxiv_id":"2203.10131","date":"2022-03-18","proceeding":"ICLR 2022 4","authors":["Patrick Schnell","Philipp Holl","Nils Thuerey"],"abstract":"Recent works in deep learning have shown that integrating differentiable physics simulators into the training process can greatly improve the quality of results. Although this combination represents a more complex optimization task than supervised neural network training, the same gradient-based optimizers are typically employed to minimize the loss function. However, the integrated physics solvers have a profound effect on the gradient flow as manipulating scales in magnitude and direction is an inherent property of many physical processes. Consequently, the gradient flow is often highly unbalanced and creates an environment in which existing gradient-based optimizers perform poorly. In this work, we analyze the characteristics of both physical and neural network optimizations to derive a new method that does not suffer from this phenomenon. Our method is based on a half-inversion of the Jacobian and combines principles of both classical network and physics optimizers to solve the combined optimization task. Compared to state-of-the-art neural network optimizers, our method converges more quickly and yields better solutions, which we demonstrate on three complex learning problems involving nonlinear oscillators, the Schroedinger equation and the Poisson problem.","url_abs":"https://arxiv.org/abs/2203.10131v1","url_pdf":"https://arxiv.org/pdf/2203.10131v1.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":"half-inverse-gradients-for-physical-deep-1","repo_url":"https://github.com/tum-pbs/half-inverse-gradients","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"half-inverse-gradients-for-physical-deep-1","repo_url":"https://github.com/tum-pbs/PhiFlow","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"deep-learning","task_name":"Deep Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2203.10131","atlas_url":"https://app.syntology.ai/?focus=2203.10131","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2203.10131"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/tum-pbs/PhiFlow","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/tum-pbs/half-inverse-gradients","reach":null}],"summary":{"ran":1,"ran_draft_wrong":1,"unverified":3},"by_repo_kind":{"official":{"samples":2,"ran":2,"repositories":1},"listed":{"samples":3,"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":"00b52f87ad855c71","entry":"NLO_optimization_framework","repo":"tum-pbs/half-inverse-gradients","repo_kind":"official","path":"Nonlinear_oscillators/NLO_HIG.py","file_url":"https://github.com/tum-pbs/half-inverse-gradients/blob/HEAD/Nonlinear_oscillators/NLO_HIG.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"00b52f87ad855c71"}},{"code_sha256_prefix":"8639882900729fb4","entry":"timing_dec","repo":"tum-pbs/half-inverse-gradients","repo_kind":"official","path":"Nonlinear_oscillators/NLO_HIG.py","file_url":"https://github.com/tum-pbs/half-inverse-gradients/blob/HEAD/Nonlinear_oscillators/NLO_HIG.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8639882900729fb4"}},{"code_sha256_prefix":"c6eaee4d81ccfb3b","entry":"construct_orifice3d","repo":"tum-pbs/PhiFlow","repo_kind":"listed","path":"demos/Top_Opt/geom.py","file_url":"https://github.com/tum-pbs/PhiFlow/blob/HEAD/demos/Top_Opt/geom.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":"c6eaee4d81ccfb3b"}},{"code_sha256_prefix":"3c7b260d9f6dbef3","entry":"to_phi_t","repo":"tum-pbs/PhiFlow","repo_kind":"listed","path":"demos/Top_Opt/geom.py","file_url":"https://github.com/tum-pbs/PhiFlow/blob/HEAD/demos/Top_Opt/geom.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":"3c7b260d9f6dbef3"}},{"code_sha256_prefix":"b4c8870cc461fe56","entry":"to_torch_t","repo":"tum-pbs/PhiFlow","repo_kind":"listed","path":"demos/Top_Opt/geom.py","file_url":"https://github.com/tum-pbs/PhiFlow/blob/HEAD/demos/Top_Opt/geom.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":"b4c8870cc461fe56"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}