{"id":13628059,"url":"https://github.com/snap-stanford/graphgym","last_synced_at":"2025-05-15T03:06:19.347Z","repository":{"id":37365987,"uuid":"303907761","full_name":"snap-stanford/GraphGym","owner":"snap-stanford","description":"Platform for designing and evaluating Graph Neural Networks (GNN)","archived":false,"fork":false,"pushed_at":"2023-11-10T05:37:18.000Z","size":11332,"stargazers_count":1798,"open_issues_count":27,"forks_count":189,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-05-15T03:06:16.290Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snap-stanford.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-14T05:01:35.000Z","updated_at":"2025-05-14T13:57:00.000Z","dependencies_parsed_at":"2024-08-01T13:39:25.481Z","dependency_job_id":null,"html_url":"https://github.com/snap-stanford/GraphGym","commit_stats":{"total_commits":60,"total_committers":6,"mean_commits":10.0,"dds":"0.19999999999999996","last_synced_commit":"daded21169ec92fde8b1252b439a8fac35b07d79"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snap-stanford%2FGraphGym","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snap-stanford%2FGraphGym/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snap-stanford%2FGraphGym/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snap-stanford%2FGraphGym/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snap-stanford","download_url":"https://codeload.github.com/snap-stanford/GraphGym/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T22:00:44.113Z","updated_at":"2025-05-15T03:06:17.742Z","avatar_url":"https://github.com/snap-stanford.png","language":"Python","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# GraphGym\nGraphGym is a platform for designing and evaluating Graph Neural Networks (GNN).\nGraphGym is proposed in *[Design Space for Graph Neural Networks](https://arxiv.org/abs/2011.08843)*, \nJiaxuan You, Rex Ying, Jure Leskovec, **NeurIPS 2020 Spotlight**.\n\nPlease also refer to [PyG](https://www.pyg.org) for a tightly integrated version of GraphGym and PyG.\n\n### Highlights\n**1. Highly modularized pipeline for GNN**\n- **Data:** Data loading, data splitting\n- **Model:** Modularized GNN implementation\n- **Tasks:** Node / edge / graph level GNN tasks\n- **Evaluation:** Accuracy, ROC AUC, ...\n\n**2. Reproducible experiment configuration** \n- Each experiment is *fully described by a configuration file*\n\n**3. Scalable experiment management**\n- Easily launch *thousands of GNN experiments in parallel* \n- *Auto-generate* experiment analyses and figures across random seeds and experiments.\n\n**4. Flexible user customization**\n- Easily *register your own modules* \n  in [`graphgym/contrib/`](graphgym/contrib), \n  such as data loaders, GNN layers, loss functions, etc. \n\n### News\n- GraphGym 0.3.0 has been released. Now you may install stable version of GraphGym via `pip install graphgym`.\n- GraphGym 0.2.0 has been released. Now GraphGym supports Pytorch Geometric backend, in addition to the default DeepSNAP backend. \n  You may try it out in [`run_single_pyg.sh`](run/run_single_pyg.sh).\n```bash\ncd run\nbash run_single_pyg.sh \n```\n\n### Example use cases\n- *[Design Space for Graph Neural Networks](https://arxiv.org/abs/2011.08843)*, Jiaxuan You, Rex Ying, Jure Leskovec, **NeurIPS 2020 Spotlight**.\n- *[Identity-aware Graph Neural Networks](https://arxiv.org/abs/2101.10320)*, Jiaxuan You, Jonathan Gomes-Selman, Rex Ying, Jure Leskovec, **AAAI 2021**.\n- *[Relational Multi-Task Learning: Modeling Relations between Data and Tasks](https://openreview.net/pdf?id=8Py-W8lSUgy)*, Kaidi Cao\u0026ast;, Jiaxuan You\u0026ast;, Jure Leskovec, **ICLR 2022 Spotlight**.\n- *[ROLAND: Graph Learning Framework for Dynamic Graphs](https://arxiv.org/abs/2208.07239)*, Jiaxuan You, Tianyu Du, Jure Leskovec, **KDD 2022**.\n\n\n\n## Why GraphGym?\n**TL;DR:** GraphGym is great for GNN beginners, domain experts and GNN researchers.\n\n**Scenario 1:** You are a beginner to GNN, who wants to understand how GNN works.\n\nYou probably have read many exciting papers on GNN, and try to write your own GNN implementation.\nUsing existing packages for GNN, you still have to code up the essential pipeline on your own.\nGraphGym is a perfect place for your to start learning *standardized GNN implementation and evaluation*.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://github.com/snap-stanford/GraphGym/raw/master/docs/design_space.png\" width=\"400px\" /\u003e\n  \u003cb\u003e\u003cbr\u003eFigure 1: Modularized GNN implementation.\u003c/b\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n**Scenario 2:** You want to apply GNN to your exciting applications.\n\nYou probably know that there are hundreds of possible GNN models, and selecting the best model is notoriously hard.\nEven worse, we have shown in our [paper](https://arxiv.org/abs/2011.08843) that the best GNN designs for different tasks differ drastically.\nGraphGym provides a *simple interface to try out thousands of GNNs in parallel* and understand the best designs for your specific task.\nGraphGym also recommends a \"go-to\" GNN design space, after investigating 10 million GNN model-task combinations.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://github.com/snap-stanford/GraphGym/raw/master/docs/rank.png\" width=\"1000px\" /\u003e\n  \u003cb\u003e\u003cbr\u003eFigure 2: A guideline for desirable GNN design choices.\u003c/b\u003e \u003cbr\u003e(Sampling from 10 million GNN model-task combinations.)\n\u003c/div\u003e\n\n\n\u003cbr\u003e\n\n\n**Scenario 3:** You are a GNN researcher, who wants to innovate GNN models / propose new GNN tasks.\n\nSay you have proposed a new GNN layer `ExampleConv`.\nGraphGym can help you convincingly argue that `ExampleConv` is better than say `GCNConv`:\nwhen randomly sample from 10 million possible model-task combinations, how often `ExampleConv` will outperform `GCNConv`, \nwhen everything else is fixed (including the computational cost). \nMoreover, GraphGym can help you easily do hyper-parameter search, and *visualize* what design choices are better.\nIn sum, GraphGym can greatly facilitate your GNN research.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://github.com/snap-stanford/GraphGym/raw/master/docs/evaluation.png\" width=\"1000px\" /\u003e\n  \u003cb\u003e\u003cbr\u003eFigure 3: Evaluation of a given GNN design dimension\u003c/b\u003e (BatchNorm here).\n\u003c/div\u003e\n\n\n\u003cbr\u003e\n\n## Installation\n\n**Requirements**\n\n- CPU or NVIDIA GPU, Linux, Python3\n- PyTorch, various Python packages; Instructions for installing these dependencies are found below\n\n\n**1. Python environment (Optional):**\nWe recommend using Conda package manager\n\n```bash\nconda create -n graphgym python=3.7\nsource activate graphgym\n```\n\n**2. Pytorch:**\nInstall [PyTorch](https://pytorch.org/). \nWe have verified GraphGym under PyTorch 1.8.0, and GraphGym should work with PyTorch 1.4.0+. For example:\n```bash\n# CUDA versions: cpu, cu92, cu101, cu102, cu101, cu111\npip install torch==1.8.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html\n```\n\n**3. Pytorch Geometric:**\nInstall [PyTorch Geometric](https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html), \nfollow their instructions. For example:\n```bash\n# CUDA versions: cpu, cu92, cu101, cu102, cu101, cu111\n# TORCH versions: 1.4.0, 1.5.0, 1.6.0, 1.7.0, 1.8.0\nCUDA=cu101\nTORCH=1.8.0\npip install torch-scatter -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html\npip install torch-sparse -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html\npip install torch-cluster -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html\npip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html\npip install torch-geometric\n```\n\n**4. GraphGym and other dependencies:**\n\n\n```bash\ngit clone https://github.com/snap-stanford/GraphGym\ncd GraphGym\npip install -r requirements.txt\npip install -e .  # From latest verion\npip install graphgym # (Optional) From pypi stable version\n```\n\n\n**5. Test the installation**\n\n**Run a single experiment.** \nRun a test GNN experiment using GraphGym [`run_single.sh`](run/run_single.sh). \nConfigurations are specified in [`example.yaml`](run/configs/example.yaml). \nThe experiment is about node classification on Cora dataset (random 80/20 train/val split).\n```bash\ncd run\nbash run_single.sh # run a single experiment\n```\n\n**Run a batch of experiments.**\nRun a batch of GNN experiments using GraphGym [`run_batch.sh`](run/run_batch.sh). \nConfigurations are specified specified in \n[`example.yaml`](run/configs/example.yaml) (controls the basic architecture) \nand [`example.txt`](run/grids/example.txt) (controls how to do grid search). \nThe experiment examines 96 models in the recommended GNN design space, on 2 graph classification datasets.\nEach experiment is repeated 3 times, and we set that 8 jobs can be concurrently run.\nDepending on your infrastructure, finishing all the experiments may take a long time;\nyou can quit the experiment by `Ctrl-C` (GraphGym will properly kill all the processes).\n```bash\ncd run\nbash run_batch.sh # run a batch of experiments \n```\n\n**(Optional) Run GraphGym with CPU backend.**\nGraphGym supports cpu backend as well -- you only need to add one line `device: cpu` to the `.yaml` file. Here we provide an example. \n\n```bash\ncd run\nbash run_single_cpu.sh # run a single experiment using CPU backend\n```\n\n**(Optional) Run GraphGym with PyG backend.**\nRun GraphGym with Pytorch Geometric (PyG) backend\n[`run_single_pyg.sh`](run/run_single_pyg.sh) and \n[`run_batch_pyg.sh`](run/run_batch_pyg.sh),\ninstead of the default DeepSNAP backend.\nThe PyG backend follows the native PyG implementation, and is slightly more efficient than the DeepSNAP backend.\nCurrently the PyG backend only supports user-provided dataset splits, such as PyG native datasets or OGB datasets.\n```bash\ncd run\nbash run_single_pyg.sh # run a single experiment using PyG backend\nbash run_batch_pyg.sh # run a batch of experiments using PyG backend \n```\n\n\n\n\n\n\n## GraphGym In-depth Usage\n\n### 1 Run a single GNN experiment\nA full example is specified in [`run/run_single.sh`](run/run_single.sh).\n\n**1.1 Specify a configuration file.**\nIn GraphGym, an experiment is fully specified by a `.yaml` file.\nUnspecified configurations in the `.yaml` file will be populated by the default values in \n[`graphgym/config.py`](graphgym/config.py).\nFor example, in [`run/configs/example.yaml`](run/configs/example.yaml), \nthere are configurations on dataset, training, model, GNN, etc.\nConcrete description for each configuration is described in \n[`graphgym/config.py`](graphgym/config.py).\n\n**1.2 Launch an experiment.**\nFor example, in [`run/run_single.sh`](run/run_single.sh):\n```bash\npython main.py --cfg configs/example.yaml --repeat 3\n```\nYou can specify the number of different random seeds to repeat via `--repeat`.\n\n**1.3 Understand the results.**\nExperimental results will be automatically saved in directory `run/results/${CONFIG_NAME}/`; \nin the example above, it is `run/results/example/`.\nResults for different random seeds will be saved in different subdirectories, such as `run/results/example/2`.\nThe aggregated results over all the random seeds are *automatically* generated into `run/results/example/agg`,\nincluding the mean and standard deviation `_std` for each metric.\nTrain/val/test results are further saved into subdirectories, such as `run/results/example/agg/val`; here, \n`stats.json` stores the results after each epoch aggregated across random seeds, \n`best.json` stores the results at *the epoch with the highest validation accuracy*.\n\n### 2 Run a batch of GNN experiments\nA full example is specified in [`run/run_batch.sh`](run/run_batch.sh).\n\n**2.1 Specify a base file.**\nGraphGym supports running a batch of experiments.\nTo start, a user needs to select a base architecture `--config`.\nThe batch of experiments will be created by perturbing certain configurations of the base architecture.\n\n**2.2 (Optional) Specify a base file for computational budget.**\nAdditionally, GraphGym allows a user to select a base architecture to *control the computational budget* for the grid search, `--config_budget`.\nThe computational budget is currently measured by the number of trainable parameters; the control is achieved by auto-adjust\nthe hidden dimension size for GNN.\nIf no `--config_budget` is provided, GraphGym will not control the computational budget.\n\n**2.3 Specify a grid file.**\nA grid file describes how to perturb the base file, in order to generate the batch of the experiments.\nFor example, the base file could specify an experiment of 3-layer GCN for Cora node classification.\nThen, the grid file specifies how to perturb the experiment along different dimension, such as number of layers,\nmodel architecture, dataset, level of task, etc.\n\n\n**2.4 Generate config files for the batch of experiments,** based on the information specified above.\nFor example, in [`run/run_batch.sh`](run/run_batch.sh):\n```bash\npython configs_gen.py --config configs/${DIR}/${CONFIG}.yaml \\\n  --config_budget configs/${DIR}/${CONFIG}.yaml \\\n  --grid grids/${DIR}/${GRID}.txt \\\n  --out_dir configs\n```\n\n**2.5 Launch the batch of experiments.**\nFor example, in [`run/run_batch.sh`](run/run_batch.sh):\n```bash\nbash parallel.sh configs/${CONFIG}_grid_${GRID} $REPEAT $MAX_JOBS\n```\nEach experiment will be repeated for `$REPEAT` times. \nWe implemented a queue system to sequentially launch all the jobs, with `$MAX_JOBS` concurrent jobs running at the same time.\nIn practice, our system works great when handling thousands of jobs.\n\n**2.6 Understand the results.**\nExperimental results will be automatically saved in directory `run/results/${CONFIG_NAME}_grid_${GRID_NAME}/`; \nin the example above, it is `run/results/example_grid_example/`.\nAfter running each experiment, GraphGym additionally automatically averages across different models, saved in\n`run/results/example_grid_example/agg`. \nThere, `val.csv` represents validation accuracy for each model configuration at the *final* epoch; \n`val_best.csv` represents the results at the epoch with the highest average validation error;\n`val_best_epoch.csv` represents the results at the epoch with the highest validation error, averaged over different random seeds.\nWhen test set split is provided, `test.csv` represents test accuracy for each model configuration at the *final* epoch; \n`test_best.csv` represents the test set results at the epoch with the highest average validation error;\n`test_best_epoch.csv` represents the test set results at the epoch with the highest validation error, averaged over different random seeds.\n\n\n\n\n\n### 3 Analyze the results\nWe provides a handy tool to automatically provide an overview of a batch of experiments in\n[`analysis/example.ipynb`](analysis/example.ipynb).\n```bash\ncd analysis\njupyter notebook\nexample.ipynb   # automatically provide an overview of a batch of experiments\n```\n\n\n\n### 4 User customization\nA highlight of GraphGym is that it allows users to easily register their customized modules.\nThe supported customized modules are provided in directory \n[`graphgym/contrib/`](graphgym/contrib), including:\n- Activation [`graphgym/contrib/act/`](graphgym/contrib/act), \n- Customized configurations [`graphgym/contrib/config/`](graphgym/contrib/config), \n- Feature augmentation [`graphgym/contrib/feature_augment/`](graphgym/contrib/feature_augment), \n- Feature encoder [`graphgym/contrib/feature_encoder/`](graphgym/contrib/feature_encoder),\n- GNN head [`graphgym/contrib/head/`](graphgym/contrib/head), \n- GNN layer [`graphgym/contrib/layer/`](graphgym/contrib/layer), \n- Data loader [`graphgym/contrib/loader/`](graphgym/contrib/loader),\n- Loss function [`graphgym/contrib/loss/`](graphgym/contrib/loss), \n- GNN network architecture [`graphgym/contrib/network/`](graphgym/contrib/network), \n- Optimizer [`graphgym/contrib/optimizer/`](graphgym/contrib/optimizer),\n- GNN global pooling (graph classification only) \n  [`graphgym/contrib/pooling/`](graphgym/contrib/pooling), \n- GNN stage [`graphgym/contrib/stage/`](graphgym/contrib/stage),\n- GNN training pipeline [`graphgym/contrib/train/`](graphgym/contrib/train), \n- Data transformations [`graphgym/contrib/transform/`](graphgym/contrib/transform).\n\nWithin each directory, (at least) an example is provided, showing how to register user customized modules.\nNote that new user customized modules may result in new configurations; in these cases, new configuration fields\ncan be registered at [`graphgym/contrib/config/`](graphgym/contrib/config).\n\n**Note: Applying to your own datasets.**\nA common use case will be applying GraphGym to your favorite datasets.\nTo do so, you may follow our example in \n[`graphgym/contrib/loader/example.py`](graphgym/contrib/loader/example.py).\nGraphGym currently accepts a list of [NetworkX](https://networkx.org/documentation/stable/index.html) graphs \nor [PyG](https://pytorch-geometric.readthedocs.io/en/latest/) datasets.\n\n### Use case: Design Space for Graph Neural Networks (NeurIPS 2020 Spotlight)\n\nReproducing experiments in *[Design Space for Graph Neural Networks](https://arxiv.org/abs/2011.08843)*, Jiaxuan You, Rex Ying, Jure Leskovec, **NeurIPS 2020 Spotlight**.\nYou may refer to the [paper](https://arxiv.org/abs/2011.08843) or [project webpage](http://snap.stanford.edu/gnn-design/) for more details. \n\n```bash\n# NOTE: We include the raw results with GraphGym\n# If you run the following code, the results will be overridden.\ncd run/scripts/design/\nbash run_design_round1.sh   # first round experiments, on a design space of 315K GNN designs\nbash run_design_round2.sh   # second round experiments, on a design space of 96 GNN designs\ncd ../analysis\njupyter notebook\ndesign_space.ipynb   # reproducing all the analyses in the paper\n```\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://github.com/snap-stanford/GraphGym/raw/master/docs/overview.png\" width=\"900px\" /\u003e\n  \u003cb\u003e\u003cbr\u003eFigure 4: Overview of the proposed GNN design space and task space.\u003c/b\u003e\n\u003c/div\u003e\n\n\n\n\n### Use case: Identity-aware Graph Neural Networks (AAAI 2021)\n\nReproducing experiments in *[Identity-aware Graph Neural Networks](https://arxiv.org/abs/2101.10320)*, Jiaxuan You, Jonathan Gomes-Selman, Rex Ying, Jure Leskovec, **AAAI 2021**.\nYou may refer to the [paper](https://arxiv.org/abs/2101.10320) or [project webpage](http://snap.stanford.edu/idgnn/) for more details. \n\n```bash\n# NOTE: We include the raw results for ID-GNN in analysis/idgnn.csv\ncd run/scripts/IDGNN/\nbash run_idgnn_node.sh   # Reproduce ID-GNN node-level results\nbash run_idgnn_edge.sh   # Reproduce ID-GNN edge-level results\nbash run_idgnn_graph.sh   # Reproduce ID-GNN graph-level results\n```\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://github.com/snap-stanford/GraphGym/raw/master/docs/IDGNN.png\" width=\"900px\" /\u003e\n  \u003cb\u003e\u003cbr\u003eFigure 5: Overview of Identity-aware Graph Neural Networks (ID-GNN).\u003c/b\u003e\n\u003c/div\u003e\n\n\n### Use case: Relational Multi-Task Learning: Modeling Relations between Data and Tasks (ICLR 2022 Spotlight)\n\nReproducing experiments in *[Relational Multi-Task Learning: Modeling Relations between Data and Tasks](https://openreview.net/pdf?id=8Py-W8lSUgy)*, Kaidi Cao\u0026ast;, Jiaxuan You\u0026ast;, Jure Leskovec, **ICLR 2022**.\n\n```bash\n# NOTE: We include the raw results for ID-GNN in analysis/idgnn.csv\ngit checkout meta_link\ncd run/scripts/MetaLink/\nbash run_metalink.sh.sh   # Reproduce MetaLink results for graph classification\n```\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg align=\"center\" src=\"https://github.com/snap-stanford/GraphGym/raw/master/docs/IDGNN.png\" width=\"900px\" /\u003e\n  \u003cb\u003e\u003cbr\u003eFigure 5: Overview of Identity-aware Graph Neural Networks (ID-GNN).\u003c/b\u003e\n\u003c/div\u003e\n\n### Use case: ROLAND: Graph Learning Framework for Dynamic Graphs (KDD 2022)\n*[ROLAND: Graph Learning Framework for Dynamic Graphs](https://arxiv.org/abs/2208.07239)*, Jiaxuan You, Tianyu Du, Jure Leskovec, **KDD 2022**.\nROLAND forks GraphGym implementation. Please checkout the [corresponding repository for ROLAND](https://github.com/snap-stanford/roland).\n\n## Contributors\n[Jiaxuan You](https://cs.stanford.edu/~jiaxuan/) initiates the project and majorly contributes to the entire GraphGym platform. \n[Rex Ying](https://cs.stanford.edu/people/rexy/) contributes to the feature augmentation modules.\nJonathan Gomes Selman enables GraphGym to have OGB support.\n\nGraphGym is inspired by the framework of [pycls](https://github.com/facebookresearch/pycls). \nGraphGym adopts [DeepSNAP](https://github.com/snap-stanford/deepsnap) as the default data representation.\nPart of GraphGym relies on [Pytorch Geometric](https://github.com/rusty1s/pytorch_geometric) functionalities.\n\n## Contributing\n\nWe warmly welcome the community to contribute to GraphGym.\nGraphGym is particularly designed to enable contribution / customization in a simple way. \nFor example, you may contribute your modules to [`graphgym/contrib/`](graphgym/contrib) by creating pull requests.\n\n## Citing GraphGym\nIf you find GraphGym or our paper useful, please cite our paper:\n```\n@InProceedings{you2020design,\n  title = {Design Space for Graph Neural Networks},\n  author = {You, Jiaxuan and Ying, Rex and Leskovec, Jure},\n  booktitle = {NeurIPS},\n  year = {2020}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnap-stanford%2Fgraphgym","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnap-stanford%2Fgraphgym","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnap-stanford%2Fgraphgym/lists"}