{"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/embedding-geometries-of-contrastive-language","title":"Embedding Geometries of Contrastive Language-Image Pre-Training","arxiv_id":"2409.13079","date":"2024-09-19","proceeding":null,"authors":["Jason Chuan-Chih Chou","Nahid Alam"],"abstract":"Since the publication of CLIP, the approach of using InfoNCE loss for contrastive pre-training has become widely popular for bridging two or more modalities. Despite its wide adoption, CLIP's original design choices of L2 normalization and cosine similarity logit have rarely been revisited. We have systematically experimented with alternative geometries and softmax logits for language-image pre-training and identified that variants with intuitive Euclidean geometry, Euclidean CLIP (EuCLIP), match or exceed the performance of CLIP and support hierarchical relationships at least as well as more complicated hyperbolic alternative.","url_abs":"https://arxiv.org/abs/2409.13079v1","url_pdf":"https://arxiv.org/pdf/2409.13079v1.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":"embedding-geometries-of-contrastive-language","repo_url":"https://github.com/eify/open_clip","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[],"methods":[{"method_slug":"clip","method_name":"CLIP"},{"method_slug":"infonce","method_name":"InfoNCE"},{"method_slug":"softmax","method_name":"Softmax"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2409.13079","atlas_url":"https://app.syntology.ai/?focus=2409.13079","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2409.13079"}},"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/eify/open_clip","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"ran_violates":1,"ran_fixture":1,"ran_draft_wrong":2,"unverified":11},"by_repo_kind":{"official":{"samples":15,"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":15,"samples":[{"code_sha256_prefix":"f19962ebb134b3d7","entry":"convert_to_custom_text_state_dict","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/model.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/model.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f19962ebb134b3d7"}},{"code_sha256_prefix":"4bdd36eab04c3f62","entry":"get_1d_sincos_pos_embed_from_grid","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/pos_embed.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/pos_embed.py","link_basis":"harvester_set","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4bdd36eab04c3f62"}},{"code_sha256_prefix":"dcd422d66b0581d8","entry":"get_cast_dtype","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/model.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/model.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"dcd422d66b0581d8"}},{"code_sha256_prefix":"b476c8cfbf0f1f47","entry":"get_input_dtype","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/model.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/model.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b476c8cfbf0f1f47"}},{"code_sha256_prefix":"ddcbd45e940484ee","entry":"gather_features","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/loss.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ddcbd45e940484ee"}},{"code_sha256_prefix":"9417ae492629cf06","entry":"get_2d_sincos_pos_embed","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/pos_embed.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/pos_embed.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9417ae492629cf06"}},{"code_sha256_prefix":"4fd80de79832745d","entry":"get_2d_sincos_pos_embed_from_grid","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/pos_embed.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/pos_embed.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"4fd80de79832745d"}},{"code_sha256_prefix":"491eae38899d6610","entry":"get_model_config","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/factory.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/factory.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"491eae38899d6610"}},{"code_sha256_prefix":"8811c5d06f3a2eaa","entry":"load_openai_model","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/openai.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/openai.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8811c5d06f3a2eaa"}},{"code_sha256_prefix":"ef8f5bfd8696abff","entry":"load_state_dict","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/factory.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/factory.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ef8f5bfd8696abff"}},{"code_sha256_prefix":"e332856e3c2fc814","entry":"neighbour_exchange","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/loss.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e332856e3c2fc814"}},{"code_sha256_prefix":"5b1fd364afcf3c05","entry":"neighbour_exchange_bidir","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/loss.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/loss.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5b1fd364afcf3c05"}},{"code_sha256_prefix":"898cc6c8249c06a0","entry":"parse_model_name","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/factory.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/factory.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"898cc6c8249c06a0"}},{"code_sha256_prefix":"fb651d0a97fd4d3f","entry":"prepare_inputs_for_generation","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/coca_model.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/coca_model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fb651d0a97fd4d3f"}},{"code_sha256_prefix":"2a377da4a76a2d44","entry":"register_pooler","repo":"eify/open_clip","repo_kind":"official","path":"src/open_clip/hf_model.py","file_url":"https://github.com/eify/open_clip/blob/HEAD/src/open_clip/hf_model.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2a377da4a76a2d44"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}