{"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/a-comprehensive-graph-pooling-benchmark","title":"A Comprehensive Graph Pooling Benchmark: Effectiveness, Robustness and Generalizability","arxiv_id":"2406.09031","date":"2024-06-13","proceeding":null,"authors":["Pengyun Wang","Junyu Luo","Yanxin Shen","Ming Zhang","Siyu Heng","Xiao Luo"],"abstract":"Graph pooling has gained attention for its ability to obtain effective node and graph representations for various downstream tasks. Despite the recent surge in graph pooling approaches, there is a lack of standardized experimental settings and fair benchmarks to evaluate their performance. To address this issue, we have constructed a comprehensive benchmark that includes 17 graph pooling methods and 28 different graph datasets. This benchmark systematically assesses the performance of graph pooling methods in three dimensions, i.e., effectiveness, robustness, and generalizability. We first evaluate the performance of these graph pooling approaches across different tasks including graph classification, graph regression and node classification. Then, we investigate their performance under potential noise attacks and out-of-distribution shifts in real-world scenarios. We also involve detailed efficiency analysis, backbone analysis, parameter analysis and visualization to provide more evidence. Extensive experiments validate the strong capability and applicability of graph pooling approaches in various scenarios, which can provide valuable insights and guidance for deep geometric learning research. The source code of our benchmark is available at https://github.com/goose315/Graph_Pooling_Benchmark.","url_abs":"https://arxiv.org/abs/2406.09031v3","url_pdf":"https://arxiv.org/pdf/2406.09031v3.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":"a-comprehensive-graph-pooling-benchmark","repo_url":"https://github.com/goose315/graph_pooling_benchmark","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"graph-classification","task_name":"Graph Classification"},{"task_slug":"graph-regression","task_name":"Graph Regression"},{"task_slug":"node-classification","task_name":"Node Classification"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.09031","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.09031"}},"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/goose315/graph_pooling_benchmark","reach":{"status":"ok"}}],"summary":{"ran":8,"ran_draft_wrong":2,"unverified":1},"by_repo_kind":{"official":{"samples":11,"ran":10,"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":11,"samples":[{"code_sha256_prefix":"bb7c269425c05018","entry":"SC_tree","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/haarpool.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/haarpool.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":"bb7c269425c05018"}},{"code_sha256_prefix":"d9840a0b1a007170","entry":"connection","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/utils.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/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":"d9840a0b1a007170"}},{"code_sha256_prefix":"ddd7df1c4230b12d","entry":"cumsum","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/models/baseline.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/models/baseline.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":"ddd7df1c4230b12d"}},{"code_sha256_prefix":"bfb16705939c2893","entry":"edge_reduce","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/MUSE_pool.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/MUSE_pool.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":"bfb16705939c2893"}},{"code_sha256_prefix":"0a2ad21f9fc7ea81","entry":"generate_edge_batch","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/utils.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/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":"0a2ad21f9fc7ea81"}},{"code_sha256_prefix":"5c7c37919f327804","entry":"sum_undirected","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/utils.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/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":"5c7c37919f327804"}},{"code_sha256_prefix":"cb653477a7fefad1","entry":"trans_to_adj","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"SEP/SEPG/trans_graph.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/SEP/SEPG/trans_graph.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cb653477a7fefad1"}},{"code_sha256_prefix":"c5f1de0e56e95d81","entry":"tree_idx","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/haarpool.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/haarpool.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":"c5f1de0e56e95d81"}},{"code_sha256_prefix":"dc5a75aef2d89ffc","entry":"tree_idx2","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/haarpool.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/haarpool.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":"dc5a75aef2d89ffc"}},{"code_sha256_prefix":"1bc1bd0cbe71477b","entry":"update_node","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"SEP/SEPG/trans_graph.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/SEP/SEPG/trans_graph.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1bc1bd0cbe71477b"}},{"code_sha256_prefix":"f0f8224d20e6307f","entry":"clustering","repo":"goose315/graph_pooling_benchmark","repo_kind":"official","path":"Regression/layers/MUSE_pool.py","file_url":"https://github.com/goose315/graph_pooling_benchmark/blob/HEAD/Regression/layers/MUSE_pool.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":"f0f8224d20e6307f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}