{"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/optimal-transport-mapping-via-input-convex","title":"Optimal transport mapping via input convex neural networks","arxiv_id":"1908.10962","date":"2019-08-28","proceeding":"ICML 2020 1","authors":["Ashok Vardhan Makkuva","Amirhossein Taghvaei","Sewoong Oh","Jason D. Lee"],"abstract":"In this paper, we present a novel and principled approach to learn the optimal transport between two distributions, from samples. Guided by the optimal transport theory, we learn the optimal Kantorovich potential which induces the optimal transport map. This involves learning two convex functions, by solving a novel minimax optimization. Building upon recent advances in the field of input convex neural networks, we propose a new framework where the gradient of one convex function represents the optimal transport mapping. Numerical experiments confirm that we learn the optimal transport mapping. This approach ensures that the transport mapping we find is optimal independent of how we initialize the neural networks. Further, target distributions from a discontinuous support can be easily captured, as gradient of a convex function naturally models a {\\em discontinuous} transport mapping.","url_abs":"https://arxiv.org/abs/1908.10962v2","url_pdf":"https://arxiv.org/pdf/1908.10962v2.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":"optimal-transport-mapping-via-input-convex","repo_url":"https://github.com/amirtag/ot-icnn","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"optimal-transport-mapping-via-input-convex","repo_url":"https://github.com/facebookresearch/w2ot","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1908.10962","atlas_url":"https://app.syntology.ai/?focus=1908.10962","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1908.10962"}},"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/facebookresearch/w2ot","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/amirtag/ot-icnn","reach":null}],"summary":{"ran_honours":1,"ran_draft_wrong":1,"ran_violates":1,"ran_fixture":2},"by_repo_kind":{"listed":{"samples":5,"ran":5,"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":5,"samples":[{"code_sha256_prefix":"3b2101dd09c14d6c","entry":"compute_constraint_loss","repo":"amirtag/ot-icnn","repo_kind":"listed","path":"High_dim_experiments/Gaussian_to_Gaussian.py","file_url":"https://github.com/amirtag/ot-icnn/blob/HEAD/High_dim_experiments/Gaussian_to_Gaussian.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3b2101dd09c14d6c"}},{"code_sha256_prefix":"e234008513ccf697","entry":"compute_optimal_transport_map","repo":"amirtag/ot-icnn","repo_kind":"listed","path":"High_dim_experiments/Gaussian_to_Gaussian.py","file_url":"https://github.com/amirtag/ot-icnn/blob/HEAD/High_dim_experiments/Gaussian_to_Gaussian.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e234008513ccf697"}},{"code_sha256_prefix":"c918c25b7e66da97","entry":"generate_cross","repo":"amirtag/ot-icnn","repo_kind":"listed","path":"2_dim_experiments/W2-minimax-tf.py","file_url":"https://github.com/amirtag/ot-icnn/blob/HEAD/2_dim_experiments/W2-minimax-tf.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c918c25b7e66da97"}},{"code_sha256_prefix":"0b3c1af13d4333d4","entry":"generate_uniform_around_centers","repo":"amirtag/ot-icnn","repo_kind":"listed","path":"2_dim_experiments/W2-minimax-tf.py","file_url":"https://github.com/amirtag/ot-icnn/blob/HEAD/2_dim_experiments/W2-minimax-tf.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0b3c1af13d4333d4"}},{"code_sha256_prefix":"a8ae77e34ab6d89d","entry":"truncated_normal","repo":"amirtag/ot-icnn","repo_kind":"listed","path":"High_dim_experiments/Gaussian_to_Gaussian.py","file_url":"https://github.com/amirtag/ot-icnn/blob/HEAD/High_dim_experiments/Gaussian_to_Gaussian.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a8ae77e34ab6d89d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}