{"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/building-the-bridge-of-schrodinger-a-1","title":"Building the Bridge of Schrödinger: A Continuous Entropic Optimal Transport Benchmark","arxiv_id":"2306.10161","date":"2023-06-16","proceeding":"NeurIPS 2023 11","authors":["Nikita Gushchin","Alexander Kolesov","Petr Mokrov","Polina Karpikova","Andrey Spiridonov","Evgeny Burnaev","Alexander Korotin"],"abstract":"Over the last several years, there has been significant progress in developing neural solvers for the Schr\\\"odinger Bridge (SB) problem and applying them to generative modelling. This new research field is justifiably fruitful as it is interconnected with the practically well-performing diffusion models and theoretically grounded entropic optimal transport (EOT). Still, the area lacks non-trivial tests allowing a researcher to understand how well the methods solve SB or its equivalent continuous EOT problem. We fill this gap and propose a novel way to create pairs of probability distributions for which the ground truth OT solution is known by the construction. Our methodology is generic and works for a wide range of OT formulations, in particular, it covers the EOT which is equivalent to SB (the main interest of our study). This development allows us to create continuous benchmark distributions with the known EOT and SB solutions on high-dimensional spaces such as spaces of images. As an illustration, we use these benchmark pairs to test how well existing neural EOT/SB solvers actually compute the EOT solution. Our code for constructing benchmark pairs under different setups is available at: https://github.com/ngushchin/EntropicOTBenchmark.","url_abs":"https://arxiv.org/abs/2306.10161v2","url_pdf":"https://arxiv.org/pdf/2306.10161v2.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":"building-the-bridge-of-schrodinger-a-1","repo_url":"https://github.com/ngushchin/entropicotbenchmark","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2306.10161","atlas_url":"https://app.syntology.ai/?focus=2306.10161","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2306.10161"}},"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/ngushchin/entropicotbenchmark","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_honours":3,"ran_draft_wrong":1,"unverified":14},"by_repo_kind":{"official":{"samples":18,"ran":4,"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":"0466e4f918aa9da0","entry":"gaussian_log_p","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/glow_model.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/glow_model.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0466e4f918aa9da0"}},{"code_sha256_prefix":"87324754644a55a3","entry":"gaussian_sample","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/glow_model.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/glow_model.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"87324754644a55a3"}},{"code_sha256_prefix":"aa4cae054b657ba2","entry":"imread","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"baselines/EntropicNeuralOptimalTransport/src/fid_score.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/baselines/EntropicNeuralOptimalTransport/src/fid_score.py","link_basis":"plan_row","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aa4cae054b657ba2"}},{"code_sha256_prefix":"6650c402c625ef7c","entry":"make_net","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"baselines/EntropicNeuralOptimalTransport/src/enot.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/baselines/EntropicNeuralOptimalTransport/src/enot.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6650c402c625ef7c"}},{"code_sha256_prefix":"5450899cdebae728","entry":"calc_loss","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/glow_train.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/glow_train.py","link_basis":"first_harvest_node","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":"5450899cdebae728"}},{"code_sha256_prefix":"f452bf17ed5cad17","entry":"calc_z_shapes","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/glow_train.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/glow_train.py","link_basis":"first_harvest_node","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":"f452bf17ed5cad17"}},{"code_sha256_prefix":"0def50a351111624","entry":"calculate_frechet_distance","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"baselines/EntropicNeuralOptimalTransport/src/fid_score.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/baselines/EntropicNeuralOptimalTransport/src/fid_score.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0def50a351111624"}},{"code_sha256_prefix":"589f3cee2cb326d4","entry":"compute_BW_by_gt_samples","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/metrics.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/metrics.py","link_basis":"first_harvest_node","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":"589f3cee2cb326d4"}},{"code_sha256_prefix":"4007d36e1fe2fe05","entry":"compute_BW_with_gt_stats","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/metrics.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/metrics.py","link_basis":"first_harvest_node","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":"4007d36e1fe2fe05"}},{"code_sha256_prefix":"56afde1af5757691","entry":"get_activations","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"baselines/EntropicNeuralOptimalTransport/src/fid_score.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/baselines/EntropicNeuralOptimalTransport/src/fid_score.py","link_basis":"plan_row","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":"56afde1af5757691"}},{"code_sha256_prefix":"90deee0d92c78913","entry":"get_data_home","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/auxiliary.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/auxiliary.py","link_basis":"first_harvest_node","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":"90deee0d92c78913"}},{"code_sha256_prefix":"140844b4cd5eca26","entry":"get_test_input_samples","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/gaussian_mixture_benchmark.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/gaussian_mixture_benchmark.py","link_basis":"first_harvest_node","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":"140844b4cd5eca26"}},{"code_sha256_prefix":"3add5b29ad2cbd24","entry":"integrate","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"baselines/EntropicNeuralOptimalTransport/src/enot.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/baselines/EntropicNeuralOptimalTransport/src/enot.py","link_basis":"plan_row","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":"3add5b29ad2cbd24"}},{"code_sha256_prefix":"0ec25b7c244e361d","entry":"load_input_test_images","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/image_benchmark.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/image_benchmark.py","link_basis":"first_harvest_node","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":"0ec25b7c244e361d"}},{"code_sha256_prefix":"0788e1a6bd53e61f","entry":"sample_z_list","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/langevin_dynamics.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/langevin_dynamics.py","link_basis":"first_harvest_node","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":"0788e1a6bd53e61f"}},{"code_sha256_prefix":"c1eb471d75746958","entry":"symmetrize","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/distributions.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/distributions.py","link_basis":"first_harvest_node","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":"c1eb471d75746958"}},{"code_sha256_prefix":"f5d53036927ce313","entry":"tensor_list_to_vector","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/langevin_dynamics.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/langevin_dynamics.py","link_basis":"first_harvest_node","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":"f5d53036927ce313"}},{"code_sha256_prefix":"68f320ab0a24a55b","entry":"vector_to_tensor_list","repo":"ngushchin/entropicotbenchmark","repo_kind":"official","path":"benchmark/langevin_dynamics.py","file_url":"https://github.com/ngushchin/entropicotbenchmark/blob/HEAD/benchmark/langevin_dynamics.py","link_basis":"first_harvest_node","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":"68f320ab0a24a55b"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}