{"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/mincut-pooling-in-graph-neural-networks","title":"Spectral Clustering with Graph Neural Networks for Graph Pooling","arxiv_id":"1907.00481","date":"2019-06-30","proceeding":"ICML 2020 1","authors":["Filippo Maria Bianchi","Daniele Grattarola","Cesare Alippi"],"abstract":"Spectral clustering (SC) is a popular clustering technique to find strongly connected communities on a graph. SC can be used in Graph Neural Networks (GNNs) to implement pooling operations that aggregate nodes belonging to the same cluster. However, the eigendecomposition of the Laplacian is expensive and, since clustering results are graph-specific, pooling methods based on SC must perform a new optimization for each new sample. In this paper, we propose a graph clustering approach that addresses these limitations of SC. We formulate a continuous relaxation of the normalized minCUT problem and train a GNN to compute cluster assignments that minimize this objective. Our GNN-based implementation is differentiable, does not require to compute the spectral decomposition, and learns a clustering function that can be quickly evaluated on out-of-sample graphs. From the proposed clustering method, we design a graph pooling operator that overcomes some important limitations of state-of-the-art graph pooling techniques and achieves the best performance in several supervised and unsupervised tasks.","url_abs":"https://arxiv.org/abs/1907.00481v6","url_pdf":"https://arxiv.org/pdf/1907.00481v6.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":"mincut-pooling-in-graph-neural-networks","repo_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"mincut-pooling-in-graph-neural-networks","repo_url":"https://github.com/FilippoMB/Benchmark_dataset_for_graph_classification","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"mincut-pooling-in-graph-neural-networks","repo_url":"https://github.com/AaltoPML/Rethinking-pooling-in-GNNs","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}},{"paper_slug":"mincut-pooling-in-graph-neural-networks","repo_url":"https://github.com/hustwutao/Deep-Clustering","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"graph-classification","task_name":"Graph Classification"},{"task_slug":"graph-clustering","task_name":"Graph Clustering"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"semantic-segmentation","task_name":"Semantic Segmentation"}],"methods":[{"method_slug":"mincutpool","method_name":"MinCutPool"}],"datasets_introduced":[],"methods_introduced":[{"slug":"mincutpool","name":"MinCutPool","full_name":"MinCut Pooling"}],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1907.00481","atlas_url":"https://app.syntology.ai/?focus=1907.00481","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1907.00481"}},"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/AaltoPML/Rethinking-pooling-in-GNNs","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hustwutao/Deep-Clustering","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/FilippoMB/Benchmark_dataset_for_graph_classification","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":1,"unverified":8},"by_repo_kind":{"official":{"samples":6,"ran":0,"repositories":1},"listed":{"samples":3,"ran":1,"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":"139333529df87241","entry":"make_dirs","repo":"hustwutao/Deep-Clustering","repo_kind":"listed","path":"DEC/utils.py","file_url":"https://github.com/hustwutao/Deep-Clustering/blob/HEAD/DEC/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"139333529df87241"}},{"code_sha256_prefix":"df1f11dcac8d2a95","entry":"acc","repo":"hustwutao/Deep-Clustering","repo_kind":"listed","path":"AE_clustering/metrics.py","file_url":"https://github.com/hustwutao/Deep-Clustering/blob/HEAD/AE_clustering/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"df1f11dcac8d2a95"}},{"code_sha256_prefix":"0de9bc2db1425653","entry":"create_batch","repo":"FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","repo_kind":"official","path":"Graph_Classification.py","file_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling/blob/HEAD/Graph_Classification.py","link_basis":"first_harvest_node","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":"0de9bc2db1425653"}},{"code_sha256_prefix":"b799b125efb60c2a","entry":"data_loader","repo":"hustwutao/Deep-Clustering","repo_kind":"listed","path":"DEC/utils.py","file_url":"https://github.com/hustwutao/Deep-Clustering/blob/HEAD/DEC/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b799b125efb60c2a"}},{"code_sha256_prefix":"7182346429ad0da2","entry":"node_feat_norm","repo":"FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","repo_kind":"official","path":"utils/misc.py","file_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling/blob/HEAD/utils/misc.py","link_basis":"first_harvest_node","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":"7182346429ad0da2"}},{"code_sha256_prefix":"e0296fe1142b4a69","entry":"preprocess_features","repo":"FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","repo_kind":"official","path":"utils/citation.py","file_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling/blob/HEAD/utils/citation.py","link_basis":"first_harvest_node","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":"e0296fe1142b4a69"}},{"code_sha256_prefix":"83966fa7ecf36402","entry":"read_graphs_txt","repo":"FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","repo_kind":"official","path":"utils/dataset_loader.py","file_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling/blob/HEAD/utils/dataset_loader.py","link_basis":"first_harvest_node","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":"83966fa7ecf36402"}},{"code_sha256_prefix":"c4e9903f579ce7de","entry":"sp_matrix_to_sp_tensor","repo":"FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","repo_kind":"official","path":"utils/misc.py","file_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling/blob/HEAD/utils/misc.py","link_basis":"first_harvest_node","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":"c4e9903f579ce7de"}},{"code_sha256_prefix":"8c0a581cc58adf11","entry":"sp_matrix_to_sp_tensor_value","repo":"FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling","repo_kind":"official","path":"utils/misc.py","file_url":"https://github.com/FilippoMB/Spectral-Clustering-with-Graph-Neural-Networks-for-Graph-Pooling/blob/HEAD/utils/misc.py","link_basis":"first_harvest_node","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":"8c0a581cc58adf11"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}