{"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/every-node-is-different-dynamically-fusing","title":"Every Node is Different: Dynamically Fusing Self-Supervised Tasks for Attributed Graph Clustering","arxiv_id":"2401.06595","date":"2024-01-12","proceeding":null,"authors":["Pengfei Zhu","Qian Wang","Yu Wang","Jialu Li","QinGhua Hu"],"abstract":"Attributed graph clustering is an unsupervised task that partitions nodes into different groups. Self-supervised learning (SSL) shows great potential in handling this task, and some recent studies simultaneously learn multiple SSL tasks to further boost performance. Currently, different SSL tasks are assigned the same set of weights for all graph nodes. However, we observe that some graph nodes whose neighbors are in different groups require significantly different emphases on SSL tasks. In this paper, we propose to dynamically learn the weights of SSL tasks for different nodes and fuse the embeddings learned from different SSL tasks to boost performance. We design an innovative graph clustering approach, namely Dynamically Fusing Self-Supervised Learning (DyFSS). Specifically, DyFSS fuses features extracted from diverse SSL tasks using distinct weights derived from a gating network. To effectively learn the gating network, we design a dual-level self-supervised strategy that incorporates pseudo labels and the graph structure. Extensive experiments on five datasets show that DyFSS outperforms the state-of-the-art multi-task SSL methods by up to 8.66% on the accuracy metric. The code of DyFSS is available at: https://github.com/q086/DyFSS.","url_abs":"https://arxiv.org/abs/2401.06595v1","url_pdf":"https://arxiv.org/pdf/2401.06595v1.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":"every-node-is-different-dynamically-fusing","repo_url":"https://github.com/q086/dyfss","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"graph-clustering","task_name":"Graph Clustering"},{"task_slug":"self-supervised-learning","task_name":"Self-Supervised Learning"}],"methods":[{"method_slug":"set","method_name":"SET"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2401.06595","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.06595"}},"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/q086/DyFSS","reach":{"status":"ok"}}],"summary":{"ran":9,"unverified":1},"by_repo_kind":{"official":{"samples":10,"ran":9,"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":10,"samples":[{"code_sha256_prefix":"8c4299420d3b59fd","entry":"allignCLus","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/cluster_alignment.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/cluster_alignment.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":"8c4299420d3b59fd"}},{"code_sha256_prefix":"590dbf370e4ce62a","entry":"cluster_alignment_simple","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/cluster_alignment.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/cluster_alignment.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":"590dbf370e4ce62a"}},{"code_sha256_prefix":"180a51cb6bd32c2f","entry":"compute_average_nmi","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/metric.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/metric.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":"180a51cb6bd32c2f"}},{"code_sha256_prefix":"fb23d97ed3b2115d","entry":"dis_loss","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/losses.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fb23d97ed3b2115d"}},{"code_sha256_prefix":"fbb0568018649a4d","entry":"index_to_mask","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/utils.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/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":"fbb0568018649a4d"}},{"code_sha256_prefix":"1f7fa485cd28340e","entry":"mask_to_index","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/utils.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/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":"1f7fa485cd28340e"}},{"code_sha256_prefix":"e9c24d0d9d9e7441","entry":"negative_labels_acc","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/metric.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/metric.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":"e9c24d0d9d9e7441"}},{"code_sha256_prefix":"e633e4aa43e6b16d","entry":"pq_loss_func","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/losses.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/losses.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e633e4aa43e6b16d"}},{"code_sha256_prefix":"72464bde6848aab6","entry":"re_loss_func","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/losses.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/losses.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":"72464bde6848aab6"}},{"code_sha256_prefix":"9ff138e83f5c9668","entry":"linear_sum_assign","repo":"q086/DyFSS","repo_kind":"official","path":"DyFSS/cluster_alignment.py","file_url":"https://github.com/q086/DyFSS/blob/HEAD/DyFSS/cluster_alignment.py","link_basis":"first_harvest_node","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":"9ff138e83f5c9668"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}