{"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/symetric-measuring-the-quality-of-learnt","title":"SyMetric: Measuring the Quality of Learnt Hamiltonian Dynamics Inferred from Vision","arxiv_id":"2111.05986","date":"2021-11-10","proceeding":"NeurIPS 2021 12","authors":["Irina Higgins","Peter Wirnsberger","Andrew Jaegle","Aleksandar Botev"],"abstract":"A recently proposed class of models attempts to learn latent dynamics from high-dimensional observations, like images, using priors informed by Hamiltonian mechanics. While these models have important potential applications in areas like robotics or autonomous driving, there is currently no good way to evaluate their performance: existing methods primarily rely on image reconstruction quality, which does not always reflect the quality of the learnt latent dynamics. In this work, we empirically highlight the problems with the existing measures and develop a set of new measures, including a binary indicator of whether the underlying Hamiltonian dynamics have been faithfully captured, which we call Symplecticity Metric or SyMetric. Our measures take advantage of the known properties of Hamiltonian dynamics and are more discriminative of the model's ability to capture the underlying dynamics than reconstruction error. Using SyMetric, we identify a set of architectural choices that significantly improve the performance of a previously proposed model for inferring latent dynamics from pixels, the Hamiltonian Generative Network (HGN). Unlike the original HGN, the new HGN++ is able to discover an interpretable phase space with physically meaningful latents on some datasets. Furthermore, it is stable for significantly longer rollouts on a diverse range of 13 datasets, producing rollouts of essentially infinite length both forward and backwards in time with no degradation in quality on a subset of the datasets.","url_abs":"https://arxiv.org/abs/2111.05986v1","url_pdf":"https://arxiv.org/pdf/2111.05986v1.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":"symetric-measuring-the-quality-of-learnt","repo_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"autonomous-driving","task_name":"Autonomous Driving"},{"task_slug":"image-reconstruction","task_name":"Image Reconstruction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2111.05986","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2111.05986"}},"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/deepmind/dm_hamiltonian_dynamics_suite","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":12},"by_repo_kind":{"official":{"samples":12,"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":"a28162f363d3a72a","entry":"create_pipeline","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/datasets.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/datasets.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":"a28162f363d3a72a"}},{"code_sha256_prefix":"77cf9b9db4dc74cf","entry":"encode_example","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/datasets.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/datasets.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":"77cf9b9db4dc74cf"}},{"code_sha256_prefix":"eb54c49f358151d5","entry":"expand_to_rank_left","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/hamiltonian_systems/utils.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/hamiltonian_systems/utils.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":"eb54c49f358151d5"}},{"code_sha256_prefix":"86dea2648404cdab","entry":"expand_to_rank_right","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/hamiltonian_systems/utils.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/hamiltonian_systems/utils.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":"86dea2648404cdab"}},{"code_sha256_prefix":"83fa0666ee6152f1","entry":"filter_based_on_keys","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/load_datasets.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/load_datasets.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":"83fa0666ee6152f1"}},{"code_sha256_prefix":"da6d626242ab598b","entry":"flatten_record","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/molecular_dynamics/generate_dataset.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/molecular_dynamics/generate_dataset.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":"da6d626242ab598b"}},{"code_sha256_prefix":"4863d1f2532e330b","entry":"load_filenames_and_parse_fn","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/load_datasets.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/load_datasets.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":"4863d1f2532e330b"}},{"code_sha256_prefix":"6907f258e0633c9b","entry":"poisson_bracket_with_q_and_p","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/hamiltonian_systems/phase_space.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/hamiltonian_systems/phase_space.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":"6907f258e0633c9b"}},{"code_sha256_prefix":"7673211f515f6a00","entry":"preprocess_batch","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/load_datasets.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/load_datasets.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":"7673211f515f6a00"}},{"code_sha256_prefix":"100b63a3610fa151","entry":"read_trajectory","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/molecular_dynamics/generate_dataset.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/molecular_dynamics/generate_dataset.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":"100b63a3610fa151"}},{"code_sha256_prefix":"2f2a719903586b8b","entry":"transform_symplectic_tangent_function_using_array","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/hamiltonian_systems/phase_space.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/hamiltonian_systems/phase_space.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":"2f2a719903586b8b"}},{"code_sha256_prefix":"43d555e817be699f","entry":"vecmul","repo":"deepmind/dm_hamiltonian_dynamics_suite","repo_kind":"official","path":"dm_hamiltonian_dynamics_suite/hamiltonian_systems/utils.py","file_url":"https://github.com/deepmind/dm_hamiltonian_dynamics_suite/blob/HEAD/dm_hamiltonian_dynamics_suite/hamiltonian_systems/utils.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":"43d555e817be699f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}