{"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/easydgl-encode-train-and-interpret-for","title":"EasyDGL: Encode, Train and Interpret for Continuous-time Dynamic Graph Learning","arxiv_id":"2303.12341","date":"2023-03-22","proceeding":null,"authors":["Chao Chen","Haoyu Geng","Nianzu Yang","Xiaokang Yang","Junchi Yan"],"abstract":"Dynamic graphs arise in various real-world applications, and it is often welcomed to model the dynamics directly in continuous time domain for its flexibility. This paper aims to design an easy-to-use pipeline (termed as EasyDGL which is also due to its implementation by DGL toolkit) composed of three key modules with both strong fitting ability and interpretability. Specifically the proposed pipeline which involves encoding, training and interpreting: i) a temporal point process (TPP) modulated attention architecture to endow the continuous-time resolution with the coupled spatiotemporal dynamics of the observed graph with edge-addition events; ii) a principled loss composed of task-agnostic TPP posterior maximization based on observed events on the graph, and a task-aware loss with a masking strategy over dynamic graph, where the covered tasks include dynamic link prediction, dynamic node classification and node traffic forecasting; iii) interpretation of the model outputs (e.g., representations and predictions) with scalable perturbation-based quantitative analysis in the graph Fourier domain, which could more comprehensively reflect the behavior of the learned model. Extensive experimental results on public benchmarks show the superior performance of our EasyDGL for time-conditioned predictive tasks, and in particular demonstrate that EasyDGL can effectively quantify the predictive power of frequency content that a model learn from the evolving graph data.","url_abs":"https://arxiv.org/abs/2303.12341v2","url_pdf":"https://arxiv.org/pdf/2303.12341v2.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":"easydgl-encode-train-and-interpret-for","repo_url":"https://github.com/cchao0116/EasyDGL","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"dynamic-link-prediction","task_name":"Dynamic Link Prediction"},{"task_slug":"dynamic-node-classification","task_name":"Dynamic Node Classification"},{"task_slug":"fraud-detection","task_name":"Fraud Detection"},{"task_slug":"graph-learning","task_name":"Graph Learning"},{"task_slug":"link-prediction","task_name":"Link Prediction"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"sequential-recommendation","task_name":"Sequential Recommendation"},{"task_slug":"traffic-prediction","task_name":"Traffic Prediction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2303.12341","atlas_url":"https://app.syntology.ai/?focus=2303.12341","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.12341"}},"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/cchao0116/EasyDGL","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":7,"unverified":1},"by_repo_kind":{"official":{"samples":8,"ran":7,"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":"f7109cad8993a8eb","entry":"choice","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/dataloader.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/dataloader.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f7109cad8993a8eb"}},{"code_sha256_prefix":"892cfe044df66e78","entry":"clip_by_value","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/model/EasyDGL.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/model/EasyDGL.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"892cfe044df66e78"}},{"code_sha256_prefix":"00d21fab37524782","entry":"create_optimizer","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/optimization.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/optimization.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"00d21fab37524782"}},{"code_sha256_prefix":"54425d58028099f9","entry":"gelu","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/model/EasyDGL.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/model/EasyDGL.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"54425d58028099f9"}},{"code_sha256_prefix":"31a88827333397cd","entry":"gelu","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/model/GREC.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/model/GREC.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"31a88827333397cd"}},{"code_sha256_prefix":"fa449773d8600eaa","entry":"initializer","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/model/BERT4REC.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/model/BERT4REC.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fa449773d8600eaa"}},{"code_sha256_prefix":"a3c3f11075934dfa","entry":"layernorm","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/model/Base.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/model/Base.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a3c3f11075934dfa"}},{"code_sha256_prefix":"598d4ddccc605e02","entry":"ranking","repo":"cchao0116/EasyDGL","repo_kind":"official","path":"src/util.py","file_url":"https://github.com/cchao0116/EasyDGL/blob/HEAD/src/util.py","link_basis":"harvester_set","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":"598d4ddccc605e02"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}