{"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/geometer-graph-few-shot-class-incremental","title":"Geometer: Graph Few-Shot Class-Incremental Learning via Prototype Representation","arxiv_id":"2205.13954","date":"2022-05-27","proceeding":null,"authors":["Bin Lu","Xiaoying Gan","Lina Yang","Weinan Zhang","Luoyi Fu","Xinbing Wang"],"abstract":"With the tremendous expansion of graphs data, node classification shows its great importance in many real-world applications. Existing graph neural network based methods mainly focus on classifying unlabeled nodes within fixed classes with abundant labeling. However, in many practical scenarios, graph evolves with emergence of new nodes and edges. Novel classes appear incrementally along with few labeling due to its newly emergence or lack of exploration. In this paper, we focus on this challenging but practical graph few-shot class-incremental learning (GFSCIL) problem and propose a novel method called Geometer. Instead of replacing and retraining the fully connected neural network classifer, Geometer predicts the label of a node by finding the nearest class prototype. Prototype is a vector representing a class in the metric space. With the pop-up of novel classes, Geometer learns and adjusts the attention-based prototypes by observing the geometric proximity, uniformity and separability. Teacher-student knowledge distillation and biased sampling are further introduced to mitigate catastrophic forgetting and unbalanced labeling problem respectively. Experimental results on four public datasets demonstrate that Geometer achieves a substantial improvement of 9.46% to 27.60% over state-of-the-art methods.","url_abs":"https://arxiv.org/abs/2205.13954v2","url_pdf":"https://arxiv.org/pdf/2205.13954v2.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":"geometer-graph-few-shot-class-incremental","repo_url":"https://github.com/RobinLu1209/Geometer","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"class-incremental-learning","task_name":"Class Incremental Learning"},{"task_slug":"few-shot-class-incremental-learning","task_name":"Few-Shot Class-Incremental Learning"},{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"incremental-learning","task_name":"Incremental Learning"},{"task_slug":"knowledge-distillation","task_name":"Knowledge Distillation"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"class-incremental-learning-1","task_name":"class-incremental learning"}],"methods":[{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"},{"method_slug":"knowledge-distillation","method_name":"Knowledge Distillation"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2205.13954","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2205.13954"}},"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/RobinLu1209/Geometer","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"ran":0,"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":"e5314db04fcc85e1","entry":"get_class_by_id","repo":"RobinLu1209/Geometer","repo_kind":"official","path":"utils.py","file_url":"https://github.com/RobinLu1209/Geometer/blob/HEAD/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":"e5314db04fcc85e1"}},{"code_sha256_prefix":"547b95d33b116b5b","entry":"get_dataset","repo":"RobinLu1209/Geometer","repo_kind":"official","path":"utils_metric.py","file_url":"https://github.com/RobinLu1209/Geometer/blob/HEAD/utils_metric.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":"547b95d33b116b5b"}},{"code_sha256_prefix":"8608c13226914eff","entry":"get_model","repo":"RobinLu1209/Geometer","repo_kind":"official","path":"utils_metric.py","file_url":"https://github.com/RobinLu1209/Geometer/blob/HEAD/utils_metric.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":"8608c13226914eff"}},{"code_sha256_prefix":"e9419ede2ac27548","entry":"get_spt_qry_id","repo":"RobinLu1209/Geometer","repo_kind":"official","path":"utils.py","file_url":"https://github.com/RobinLu1209/Geometer/blob/HEAD/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":"e9419ede2ac27548"}},{"code_sha256_prefix":"7544ed5d0829e676","entry":"get_spt_qry_id_old","repo":"RobinLu1209/Geometer","repo_kind":"official","path":"utils.py","file_url":"https://github.com/RobinLu1209/Geometer/blob/HEAD/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":"7544ed5d0829e676"}},{"code_sha256_prefix":"4231848dba6800df","entry":"inner_product_dist","repo":"RobinLu1209/Geometer","repo_kind":"official","path":"utils_metric.py","file_url":"https://github.com/RobinLu1209/Geometer/blob/HEAD/utils_metric.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":"4231848dba6800df"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}