{"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/predict-then-propagate-graph-neural-networks","title":"Predict then Propagate: Graph Neural Networks meet Personalized PageRank","arxiv_id":"1810.05997","date":"2018-10-14","proceeding":"ICLR 2019 5","authors":["Johannes Gasteiger","Aleksandar Bojchevski","Stephan Günnemann"],"abstract":"Neural message passing algorithms for semi-supervised classification on graphs have recently achieved great success. However, for classifying a node these methods only consider nodes that are a few propagation steps away and the size of this utilized neighborhood is hard to extend. In this paper, we use the relationship between graph convolutional networks (GCN) and PageRank to derive an improved propagation scheme based on personalized PageRank. We utilize this propagation procedure to construct a simple model, personalized propagation of neural predictions (PPNP), and its fast approximation, APPNP. Our model's training time is on par or faster and its number of parameters on par or lower than previous models. It leverages a large, adjustable neighborhood for classification and can be easily combined with any neural network. We show that this model outperforms several recently proposed methods for semi-supervised classification in the most thorough study done so far for GCN-like models. Our implementation is available online.","url_abs":"https://arxiv.org/abs/1810.05997v6","url_pdf":"https://arxiv.org/pdf/1810.05997v6.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":"predict-then-propagate-graph-neural-networks","repo_url":"https://github.com/klicperajo/ppnp","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"predict-then-propagate-graph-neural-networks","repo_url":"https://github.com/benedekrozemberczki/APPNP","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"predict-then-propagate-graph-neural-networks","repo_url":"https://github.com/dmlc/dgl/tree/master/examples/mxnet/appnp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"predict-then-propagate-graph-neural-networks","repo_url":"https://github.com/dmlc/dgl/tree/master/examples/pytorch/appnp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"predict-then-propagate-graph-neural-networks","repo_url":"https://github.com/mahequn001/graphlearning/tree/master/model_zoo/appnp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"mindspore","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"classification","task_name":"General Classification"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"node-classification-on-non-homophilic","task_name":"Node Classification on Non-Homophilic (Heterophilic) Graphs"}],"methods":[{"method_slug":"appnp","method_name":"APPNP"},{"method_slug":"graph-convolutional-networks","method_name":"Graph Convolutional Networks"}],"datasets_introduced":[],"methods_introduced":[{"slug":"appnp","name":"APPNP","full_name":"Approximation of Personalized Propagation of Neural Predictions"}],"results":[{"leaderboard":"/sota/node-classification-on-chameleon-60-20-20","task":"Node Classification","dataset":"Chameleon (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":35,"of":38,"metrics":{"1:1 Accuracy":"51.91 ± 0.56"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-citeseer-60-20-20","task":"Node Classification","dataset":"CiteSeer (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":30,"of":33,"metrics":{"1:1 Accuracy":"68.59 ± 0.30"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-citeseer","task":"Node Classification","dataset":"Citeseer","model":"PPNP","rank_in_archive_order":16,"of":71,"metrics":{"Accuracy":"75.83%","Validation":"YES"},"uses_additional_data":true},{"leaderboard":"/sota/node-classification-on-citeseer","task":"Node Classification","dataset":"Citeseer","model":"APPNP","rank_in_archive_order":19,"of":71,"metrics":{"Accuracy":"75.73%"},"uses_additional_data":true},{"leaderboard":"/sota/node-classification-on-cora","task":"Node Classification","dataset":"Cora","model":"PPNP","rank_in_archive_order":25,"of":73,"metrics":{"Accuracy":"85.29% ± 0.25%","Validation":"YES"},"uses_additional_data":true},{"leaderboard":"/sota/node-classification-on-cora","task":"Node Classification","dataset":"Cora","model":"APPNP","rank_in_archive_order":27,"of":73,"metrics":{"Accuracy":"85.09% ± 0.25%","Validation":"YES"},"uses_additional_data":true},{"leaderboard":"/sota/node-classification-on-cora-60-20-20-random","task":"Node Classification","dataset":"Cora (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":30,"of":33,"metrics":{"1:1 Accuracy":"79.41 ± 0.38"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-cornell-60-20-20","task":"Node Classification","dataset":"Cornell (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":16,"of":36,"metrics":{"1:1 Accuracy":"91.80 ± 0.63"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-film-60-20-20-random","task":"Node Classification","dataset":"Film (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":22,"of":37,"metrics":{"1:1 Accuracy":"38.86 ± 0.24"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-ms-academic","task":"Node Classification","dataset":"MS ACADEMIC","model":"APPNP","rank_in_archive_order":1,"of":3,"metrics":{"Accuracy":"93.27 ± 0.08"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-penn94","task":"Node Classification","dataset":"Penn94","model":"APPNP","rank_in_archive_order":26,"of":32,"metrics":{"Accuracy":"74.33 ± 0.38"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-pubmed-60-20-20-random","task":"Node Classification","dataset":"PubMed (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":36,"of":37,"metrics":{"1:1 Accuracy":"85.02 ± 0.09"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-pubmed","task":"Node Classification","dataset":"Pubmed","model":"APPNP","rank_in_archive_order":38,"of":70,"metrics":{"Accuracy":"79.73 ± 0.31","Validation":"YES"},"uses_additional_data":true},{"leaderboard":"/sota/node-classification-on-squirrel-60-20-20","task":"Node Classification","dataset":"Squirrel (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":34,"of":37,"metrics":{"1:1 Accuracy":"34.77 ± 0.34"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-texas-60-20-20-random","task":"Node Classification","dataset":"Texas (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":18,"of":36,"metrics":{"1:1 Accuracy":"91.18 ± 0.70"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-wisconsin-60-20-20","task":"Node Classification","dataset":"Wisconsin (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":17,"of":35,"metrics":{"1:1 Accuracy":"92.00 ±  3.59"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-genius","task":"Node Classification","dataset":"genius","model":"APPNP","rank_in_archive_order":16,"of":26,"metrics":{"Accuracy":"85.36 ± 0.62"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-4","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"Chameleon(60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":29,"of":32,"metrics":{"1:1 Accuracy":"51.91 ± 0.56"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"Cornell (60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":16,"of":33,"metrics":{"1:1 Accuracy":"91.80 ± 0.63"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-6","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"Deezer-Europe","model":"APPNP","rank_in_archive_order":6,"of":28,"metrics":{"1:1 Accuracy":"67.21±0.56"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-13","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"Penn94","model":"APPNP","rank_in_archive_order":22,"of":28,"metrics":{"1:1 Accuracy":"74.33 ± 0.38"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-2","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"Texas(60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":17,"of":32,"metrics":{"1:1 Accuracy":"91.18 ± 0.70"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-1","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"Wisconsin(60%/20%/20% random splits)","model":"APPNP","rank_in_archive_order":17,"of":32,"metrics":{"1:1 Accuracy":"92.00 ±  3.59"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-14","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"genius","model":"APPNP","rank_in_archive_order":18,"of":26,"metrics":{"1:1 Accuracy":"85.36 ± 0.62"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-non-homophilic-15","task":"Node Classification on Non-Homophilic (Heterophilic) Graphs","dataset":"twitch-gamers","model":"APPNP","rank_in_archive_order":22,"of":26,"metrics":{"1:1 Accuracy":"60.97 ± 0.10"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1810.05997","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1810.05997"}},"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/dmlc/dgl/tree/master/examples/pytorch/appnp","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dmlc/dgl/tree/master/examples/mxnet/appnp","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/klicperajo/ppnp","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/mahequn001/graphlearning/tree/master/model_zoo/appnp","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/benedekrozemberczki/APPNP","reach":{"status":"ok","spdx":"GPL-3.0"}}],"summary":{"ran_draft_wrong":1,"unverified":11},"by_repo_kind":{"official":{"samples":12,"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":"27f355e24ef27c9b","entry":"sparse_matrix_to_torch","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/pytorch/utils.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/pytorch/utils.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"27f355e24ef27c9b"}},{"code_sha256_prefix":"0c74fb12dd5a5cd2","entry":"calc_A_hat","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/pytorch/propagation.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/pytorch/propagation.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":"0c74fb12dd5a5cd2"}},{"code_sha256_prefix":"ae9d20a1aa16d8a2","entry":"calc_ppr_exact","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/pytorch/propagation.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/pytorch/propagation.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":"ae9d20a1aa16d8a2"}},{"code_sha256_prefix":"82bcc52c572684f5","entry":"exclude_idx","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/preprocessing.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/preprocessing.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":"82bcc52c572684f5"}},{"code_sha256_prefix":"95c286604696f55a","entry":"gen_seeds","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/preprocessing.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/preprocessing.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":"95c286604696f55a"}},{"code_sha256_prefix":"a75db933b77e116f","entry":"get_dataloaders","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/pytorch/training.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/pytorch/training.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":"a75db933b77e116f"}},{"code_sha256_prefix":"2d5ded2424bde021","entry":"get_predictions","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/pytorch/training.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/pytorch/training.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":"2d5ded2424bde021"}},{"code_sha256_prefix":"7fd00eb2611bf53f","entry":"known_unknown_split","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/preprocessing.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/preprocessing.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":"7fd00eb2611bf53f"}},{"code_sha256_prefix":"781c9e24c325cc7a","entry":"matrix_to_tensor","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/tensorflow/utils.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/tensorflow/utils.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":"781c9e24c325cc7a"}},{"code_sha256_prefix":"8b5f84fdbffe3b4f","entry":"matrix_to_torch","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/pytorch/utils.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/pytorch/utils.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":"8b5f84fdbffe3b4f"}},{"code_sha256_prefix":"3b270c601a03ed8c","entry":"sparse_dropout","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/tensorflow/utils.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/tensorflow/utils.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":"3b270c601a03ed8c"}},{"code_sha256_prefix":"0a9edb272963d594","entry":"sparse_matrix_to_tensor","repo":"klicperajo/ppnp","repo_kind":"official","path":"ppnp/tensorflow/utils.py","file_url":"https://github.com/klicperajo/ppnp/blob/HEAD/ppnp/tensorflow/utils.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":"0a9edb272963d594"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}