{"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/rectangular-flows-for-manifold-learning","title":"Rectangular Flows for Manifold Learning","arxiv_id":"2106.01413","date":"2021-06-02","proceeding":"NeurIPS 2021 12","authors":["Anthony L. Caterini","Gabriel Loaiza-Ganem","Geoff Pleiss","John P. Cunningham"],"abstract":"Normalizing flows are invertible neural networks with tractable change-of-volume terms, which allow optimization of their parameters to be efficiently performed via maximum likelihood. However, data of interest are typically assumed to live in some (often unknown) low-dimensional manifold embedded in a high-dimensional ambient space. The result is a modelling mismatch since -- by construction -- the invertibility requirement implies high-dimensional support of the learned distribution. Injective flows, mappings from low- to high-dimensional spaces, aim to fix this discrepancy by learning distributions on manifolds, but the resulting volume-change term becomes more challenging to evaluate. Current approaches either avoid computing this term entirely using various heuristics, or assume the manifold is known beforehand and therefore are not widely applicable. Instead, we propose two methods to tractably calculate the gradient of this term with respect to the parameters of the model, relying on careful use of automatic differentiation and techniques from numerical linear algebra. Both approaches perform end-to-end nonlinear manifold learning and density estimation for data projected onto this manifold. We study the trade-offs between our proposed methods, empirically verify that we outperform approaches ignoring the volume-change term by more accurately learning manifolds and the corresponding distributions on them, and show promising results on out-of-distribution detection. Our code is available at https://github.com/layer6ai-labs/rectangular-flows.","url_abs":"https://arxiv.org/abs/2106.01413v3","url_pdf":"https://arxiv.org/pdf/2106.01413v3.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":"rectangular-flows-for-manifold-learning","repo_url":"https://github.com/layer6ai-labs/rectangular-flows","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"density-estimation","task_name":"Density Estimation"},{"task_slug":"out-of-distribution-detection","task_name":"Out-of-Distribution Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2106.01413","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2106.01413"}},"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":"deterministic:regex_extraction","url":"https://github.com/layer6ai-labs/rectangular-flows","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/johannbrehmer/manifold-flow","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3},"by_repo_kind":{"official":{"samples":3,"ran":3,"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":3,"samples":[{"code_sha256_prefix":"5fead61b72588369","entry":"AffineCouplingBijection","repo":"layer6ai-labs/rectangular-flows","repo_kind":"official","path":"cif/models/components/bijections/acl.py","file_url":"https://github.com/layer6ai-labs/rectangular-flows/blob/HEAD/cif/models/components/bijections/acl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5fead61b72588369"}},{"code_sha256_prefix":"106857a511dcde37","entry":"ConditionedBijection","repo":"layer6ai-labs/rectangular-flows","repo_kind":"official","path":"cif/models/components/bijections/acl.py","file_url":"https://github.com/layer6ai-labs/rectangular-flows/blob/HEAD/cif/models/components/bijections/acl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"106857a511dcde37"}},{"code_sha256_prefix":"f00674c72106804f","entry":"InverseBijection","repo":"layer6ai-labs/rectangular-flows","repo_kind":"official","path":"cif/models/components/bijections/acl.py","file_url":"https://github.com/layer6ai-labs/rectangular-flows/blob/HEAD/cif/models/components/bijections/acl.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f00674c72106804f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}