{"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/duplex-dual-gat-for-complex-embedding-of","title":"DUPLEX: Dual GAT for Complex Embedding of Directed Graphs","arxiv_id":"2406.05391","date":"2024-06-08","proceeding":null,"authors":["Zhaoru Ke","Hang Yu","Jianguo Li","Haipeng Zhang"],"abstract":"Current directed graph embedding methods build upon undirected techniques but often inadequately capture directed edge information, leading to challenges such as: (1) Suboptimal representations for nodes with low in/out-degrees, due to the insufficient neighbor interactions; (2) Limited inductive ability for representing new nodes post-training; (3) Narrow generalizability, as training is overly coupled with specific tasks. In response, we propose DUPLEX, an inductive framework for complex embeddings of directed graphs. It (1) leverages Hermitian adjacency matrix decomposition for comprehensive neighbor integration, (2) employs a dual GAT encoder for directional neighbor modeling, and (3) features two parameter-free decoders to decouple training from particular tasks. DUPLEX outperforms state-of-the-art models, especially for nodes with sparse connectivity, and demonstrates robust inductive capability and adaptability across various tasks. The code is available at https://github.com/alipay/DUPLEX.","url_abs":"https://arxiv.org/abs/2406.05391v2","url_pdf":"https://arxiv.org/pdf/2406.05391v2.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":"duplex-dual-gat-for-complex-embedding-of","repo_url":"https://github.com/alipay/duplex","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"graph-embedding","task_name":"Graph Embedding"}],"methods":[{"method_slug":"gat","method_name":"GAT"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.05391","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.05391"}},"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/alipay/duplex","reach":{"status":"ok"}}],"summary":{"ran":8},"by_repo_kind":{"official":{"samples":8,"ran":8,"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":8,"samples":[{"code_sha256_prefix":"0bf351a7ef4d216e","entry":"generate_random_initialize","repo":"alipay/duplex","repo_kind":"official","path":"code/train_edge/data_preprocessing.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/train_edge/data_preprocessing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0bf351a7ef4d216e"}},{"code_sha256_prefix":"685653e898ca91ad","entry":"getLogger","repo":"alipay/duplex","repo_kind":"official","path":"code/mylogging.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/mylogging.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"685653e898ca91ad"}},{"code_sha256_prefix":"bbd3d52117c5e9d0","entry":"load_edges","repo":"alipay/duplex","repo_kind":"official","path":"code/train_edge/evaluation.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/train_edge/evaluation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bbd3d52117c5e9d0"}},{"code_sha256_prefix":"84da01a198fa4b0f","entry":"load_result_npz","repo":"alipay/duplex","repo_kind":"official","path":"code/train_edge/evaluation.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/train_edge/evaluation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"84da01a198fa4b0f"}},{"code_sha256_prefix":"b58b5b1d0d07c080","entry":"predictor","repo":"alipay/duplex","repo_kind":"official","path":"code/utils.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b58b5b1d0d07c080"}},{"code_sha256_prefix":"e79018a78f69da67","entry":"read_initialize","repo":"alipay/duplex","repo_kind":"official","path":"code/train_edge/data_preprocessing.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/train_edge/data_preprocessing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e79018a78f69da67"}},{"code_sha256_prefix":"cc5db19bab8fab24","entry":"undirected_label2directed_label","repo":"alipay/duplex","repo_kind":"official","path":"code/utils.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cc5db19bab8fab24"}},{"code_sha256_prefix":"55591c8bc7511c36","entry":"unique","repo":"alipay/duplex","repo_kind":"official","path":"code/train_edge/data_preprocessing.py","file_url":"https://github.com/alipay/duplex/blob/HEAD/code/train_edge/data_preprocessing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"55591c8bc7511c36"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}