{"id":20507266,"url":"https://github.com/bupt-gamma/gammagl","last_synced_at":"2025-04-14T08:57:32.016Z","repository":{"id":37007963,"uuid":"433331296","full_name":"BUPT-GAMMA/GammaGL","owner":"BUPT-GAMMA","description":"A multi-backend graph learning library.","archived":false,"fork":false,"pushed_at":"2025-03-30T05:07:44.000Z","size":57836,"stargazers_count":236,"open_issues_count":10,"forks_count":82,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-04-07T03:04:03.033Z","etag":null,"topics":["deep-learning","framework-agnostic","graph","mindspore","paddlepaddle","pytorch","tensorflow","tensorlayerx"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BUPT-GAMMA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2021-11-30T07:15:51.000Z","updated_at":"2025-04-02T12:46:03.000Z","dependencies_parsed_at":"2023-02-17T03:15:45.184Z","dependency_job_id":"84a68431-cc99-44fc-bcc7-225603e9372c","html_url":"https://github.com/BUPT-GAMMA/GammaGL","commit_stats":{"total_commits":634,"total_committers":59,"mean_commits":"10.745762711864407","dds":0.7681388012618297,"last_synced_commit":"4f6396fe0b2357455e35a3756f8dce15dee4c07d"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUPT-GAMMA%2FGammaGL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUPT-GAMMA%2FGammaGL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUPT-GAMMA%2FGammaGL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BUPT-GAMMA%2FGammaGL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BUPT-GAMMA","download_url":"https://codeload.github.com/BUPT-GAMMA/GammaGL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248852123,"owners_count":21171839,"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":["deep-learning","framework-agnostic","graph","mindspore","paddlepaddle","pytorch","tensorflow","tensorlayerx"],"created_at":"2024-11-15T20:13:00.640Z","updated_at":"2025-04-14T08:57:31.993Z","avatar_url":"https://github.com/BUPT-GAMMA.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gamma Graph Library(GammaGL)\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/BUPT-GAMMA/GammaGL)\n[![Documentation Status](https://readthedocs.org/projects/gammagl/badge/?version=latest)](https://gammagl.readthedocs.io/en/latest/?badge=latest)\n![GitHub](https://img.shields.io/github/license/BUPT-GAMMA/GammaGL)\n![visitors](https://visitor-badge.glitch.me/badge?page_id=BUPT-GAMMA.GammaGL)\n![GitHub all releases](https://img.shields.io/github/downloads/BUPT-GAMMA/GammaGL/total)\n![Total lines](https://img.shields.io/tokei/lines/github/BUPT-GAMMA/GammaGL?color=red)\n\n**[Documentation](https://gammagl.readthedocs.io/en/latest/)** |**[启智社区](https://git.openi.org.cn/GAMMALab/GammaGL)**\n\nGammaGL is a multi-backend graph learning library based on [TensorLayerX](https://github.com/tensorlayer/TensorLayerX), which supports TensorFlow, PyTorch, PaddlePaddle, MindSpore as the backends.\n\nWe give a development tutorial in Chinese on [wiki](https://github.com/BUPT-GAMMA/GammaGL/wiki/%E5%BC%80%E5%8F%91%E8%80%85%E6%B5%81%E7%A8%8B).\n\n## Highlighted Features\n\n### Multi-backend\n\nGammaGL supports multiple deep learning backends, such as TensorFlow, PyTorch, Paddle and MindSpore. Different from DGL, the GammaGL's examples are implemented with **the same code** on different backend. It allows users to run the same code on different hardwares like Nvidia-GPU and Huawei-Ascend. Besides, users could use a particular framework API based on preferences for different frameworks.\n\n### PyG-Like\n\nFollowing [PyTorch Geometric(PyG)](https://github.com/pyg-team/pytorch_geometric), GammaGL utilizes a tensor-centric API. If you are familiar with PyG, it will be friendly and maybe a TensorFlow Geometric, Paddle Geometric, or MindSpore Geometric to you.\n\n## News\n\u003cdetails\u003e\n\u003csummary\u003e2024-07-29 release v0.5\n\u003c/summary\u003e\n\u003c/br\u003e\nWe release the latest version v0.5\n\n- 70 GNN models\n- More fused operators\n- Support GPU sample\n- Support GraphStore and FeatureStore\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e2024-01-24 release v0.4\n\u003c/summary\u003e\n\u003c/br\u003e\nWe release the latest version v0.4.\n\n- 60 GNN models\n- More fused operators and users can truly use these operators\n- Support the latest version of PyTorch and MindSpore\n- Support for graph database like neo4j\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e2023-07-12 release v0.3\n\u003c/summary\u003e\n\u003c/br\u003e\nWe release the latest version v0.3.\n\n- 50 GNN models\n- Efficient message passing operators and fused operator\n- Rebuild sampling architecture.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\n2023-04-01 paper accepted\n\u003c/summary\u003e\n\u003cbr/\u003e\n\nOur paper \u003ci\u003eGammaGL: A Multi-Backend Library for Graph Neural Networks\u003c/i\u003e is accpeted at SIGIR 2023 resource paper track.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\n2023-02-24 启智社区优秀孵化项目奖\n\u003c/summary\u003e\n\u003cbr/\u003e\n\nGammaGL荣获启智社区优秀孵化项⽬奖！详细链接：https://mp.weixin.qq.com/s/PpbwEdP0-8wG9dsvRvRDaA\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\n2023-02-21 中国电子学会科技进步一等奖\n\u003c/summary\u003e\n\u003cbr/\u003e\n\n算法库支撑了北邮牵头，蚂蚁、中移动、海致科技等参与的“大规模复杂异质图数据智能分析技术与规模化应用”项目。该项目获得了2022年电子学会科技进步一等奖。\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e2023-01-17 release v0.2\n\u003c/summary\u003e\n\u003c/br\u003e\nWe release the latest version v0.2.\n\n- 40 GNN models\n- 20 datasets\n- Efficient message passing operators and fused operator\n- GPU sampling and heterogeneous graphs samplers.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e2022-06-20 release v0.1\n\u003c/summary\u003e\n\u003c/br\u003e\nWe release the latest version v0.1.\n\n- Framework-agnostic design\n- PyG-like\n- Graph data structures, message passing module and sampling module\n- 20+ GNN models\n\n\u003c/details\u003e\n\n## Get Started\n\nCurrently, GammaGL requires **Python Version \u003e= 3.9** and is only supported on **Linux** operating systems.\n\n\n1. **Python environment** (Optional): We recommend using Conda package manager\n   \n   ```bash\n   $ conda create -n ggl python=3.9\n   $ source activate ggl\n   ```\n\n2. **Install Backend**\n   \n   ```bash\n   # For tensorflow\n   $ pip install tensorflow-gpu # GPU version\n   $ pip install tensorflow # CPU version\n   \n   # For torch, version 2.1+cuda 11.8\n   # https://pytorch.org/get-started/locally/\n   $ pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118\n   \n   # For paddle, any latest stable version\n   # https://www.paddlepaddle.org.cn/\n   $ python -m pip install paddlepaddle-gpu\n   \n   # For mindspore, GammaGL supports version 2.2.0, GPU-CUDA 11.6\n   # https://www.mindspore.cn/install\n   $ pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.2.0/MindSpore/unified/x86_64/mindspore-2.2.0-cp39-cp39-linux_x86_64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple\n   ```\n   \n   For other backend with specific version, [please check whether TLX supports](https://tensorlayerx.readthedocs.io/en/latest/user/installation.html#install-backend).\n   \n   Install TensorLayerX\n   \n   ```bash\n   pip install git+https://github.com/dddg617/tensorlayerx.git@nightly \n   ```\n\n\n   **Note**:\n   \u003e - PyTorch is necessary when installing TensorLayerX.\n   \u003e - This TensorLayerX is supported by **BUPT GAMMA Lab Team**.\n\n3. **Download GammaGL**\n\n    You may download the nightly version through the following commands:\n\n   ```bash\n   $ git clone --recursive https://github.com/BUPT-GAMMA/GammaGL.git\n   $ pip install pybind11 pyparsing\n   $ python setup.py install\n   ```\n\n   \u003e 大陆用户如果遇到网络问题，推荐从启智社区安装\n   \u003e \n   \u003e Try to git clone from OpenI\n   \u003e \n   \u003e `git clone --recursive https://git.openi.org.cn/GAMMALab/GammaGL.git`\n   \n   **Note**:\n   \u003e \"--recursive\" is necessary, if you forgot, you can run command below in GammaGL root dir:\n   \u003e \n   \u003e `git submodule update --init`\n\n    You may also download the stable version refer to our [document](https://gammagl.readthedocs.io/en/latest/notes/installation.html).\n\n## Quick Tour for New Users\n\nIn this quick tour, we highlight the ease of creating and training a GNN model with only a few lines of code.\n\n### Train your own GNN model\n\nIn the first glimpse of GammaGL, we implement the training of a GNN for classifying papers in a citation graph.\nFor this, we load the [Cora](https://gammagl.readthedocs.io/en/latest/api/gammagl.datasets.html#gammagl.datasets.Planetoid) dataset, and create a simple 2-layer GCN model using the pre-defined [`GCNConv`](https://github.com/BUPT-GAMMA/GammaGL/blob/main/gammagl/layers/conv/gcn_conv.py):\n\n```python\nimport tensorlayerx as tlx\nfrom gammagl.layers.conv import GCNConv\nfrom gammagl.datasets import Planetoid\n\ndataset = Planetoid(root='.', name='Cora')\n\nclass GCN(tlx.nn.Module):\n    def __init__(self, in_channels, hidden_channels, out_channels):\n        super().__init__()\n        self.conv1 = GCNConv(in_channels, hidden_channels)\n        self.conv2 = GCNConv(hidden_channels, out_channels)\n        self.relu = tlx.ReLU()\n\n    def forward(self, x, edge_index):\n        # x: Node feature matrix of shape [num_nodes, in_channels]\n        # edge_index: Graph connectivity matrix of shape [2, num_edges]\n        x = self.conv1(x, edge_index)\n        x = self.relu(x)\n        x = self.conv2(x, edge_index)\n        return x\n\nmodel = GCN(dataset.num_features, 16, dataset.num_classes)\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\nWe can now optimize the model in a training loop, similar to the \u003ca href=\"https://tensorlayerx.readthedocs.io/en/latest/modules/model.html#trainonestep\"\u003estandard TensorLayerX training procedure\u003c/a\u003e.\u003c/summary\u003e\n\n```python\nimport tensorlayerx as tlx\ndata = dataset[0]\nloss_fn = tlx.losses.softmax_cross_entropy_with_logits\noptimizer = tlx.optimizers.Adam(learning_rate=1e-3)\nnet_with_loss = tlx.model.WithLoss(model, loss_fn)\ntrain_one_step = tlx.model.TrainOneStep(net_with_loss, optimizer, train_weights)\n\nfor epoch in range(200):\n    loss = train_one_step(data.x, data.y)\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWe can now optimize the model in a training loop, similar to the \u003ca href=\"https://pytorch.org/tutorials/beginner/basics/optimization_tutorial.html#full-implementation\"\u003estandard PyTorch training procedure\u003c/a\u003e.\u003c/summary\u003e\n\n```python\nimport torch.nn.functional as F\n\ndata = dataset[0]\noptimizer = torch.optim.Adam(model.parameters(), lr=0.01)\n\nfor epoch in range(200):\n    pred = model(data.x, data.edge_index)\n    loss = F.cross_entropy(pred[data.train_mask], data.y[data.train_mask])\n\n    # Backpropagation\n    optimizer.zero_grad()\n    loss.backward()\n    optimizer.step()\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWe can now optimize the model in a training loop, similar to the \u003ca href=\"https://tensorflow.google.cn/tutorials/quickstart/advanced\"\u003estandard TensorFlow training procedure\u003c/a\u003e.\u003c/summary\u003e\n\n```python\nimport tensorflow as tf\n\noptimizer = tf.keras.optimizers.Adam()\nloss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)\nfor epoch in range(200):\n    with tf.GradientTape() as tape:\n        predictions = model(images, training=True)\n        loss = loss_fn(labels, predictions)\n    gradients = tape.gradient(loss, model.trainable_variables)\n    optimizer.apply_gradients(zip(gradients, model.trainable_variables))\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWe can now optimize the model in a training loop, similar to the \u003ca href=\"https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/beginner/train_eval_predict_cn.html#api\"\u003estandard PaddlePaddle training procedure\u003c/a\u003e.\u003c/summary\u003e\n\n```python\nimport paddle\n\ndata = dataset[0]\noptim = paddle.optimizer.Adam(parameters=model.parameters())\nloss_fn = paddle.nn.CrossEntropyLoss()\n\nmodel.train()\nfor epoch in range(200):\n    predicts = model(data.x, data.edge_index)\n    loss = loss_fn(predicts, y_data)\n\n    # Backpropagation\n    loss.backward()\n    optim.step()\n    optim.clear_grad()\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWe can now optimize the model in a training loop, similar to the \u003ca href=\"https://www.mindspore.cn/tutorials/zh-CN/r1.7/advanced/train/train_eval.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E8%AE%AD%E7%BB%83%E5%92%8C%E8%AF%84%E4%BC%B0\"\u003estandard MindSpore training procedure\u003c/a\u003e.\u003c/summary\u003e\n\n```python\n# 1. Generate training dataset\ntrain_dataset = create_dataset(num_data=160, batch_size=16)\n\n# 2.Build a model and define the loss function\nnet = LinearNet()\nloss = nn.MSELoss()\n\n# 3.Connect the network with loss function, and define the optimizer\nnet_with_loss = nn.WithLossCell(net, loss)\nopt = nn.Momentum(net.trainable_params(), learning_rate=0.005, momentum=0.9)\n\n# 4.Define the training network\ntrain_net = nn.TrainOneStepCell(net_with_loss, opt)\n\n# 5.Set the model as training mode\ntrain_net.set_train()\n\n# 6.Training procedure\nfor epoch in range(200):\n    for d in train_dataset.create_dict_iterator():\n        result = train_net(d['data'], d['label'])\n        print(f\"Epoch: [{epoch} / {epochs}], \"\n              f\"step: [{step} / {steps}], \"\n              f\"loss: {result}\")\n        step = step + 1\n```\n\n\u003c/details\u003e\n\nMore information about evaluating final model performance can be found in the corresponding [example](https://github.com/BUPT-GAMMA/GammaGL/tree/main/examples/gcn).\n\n### Create your own GNN layer\n\nIn addition to the easy application of existing GNNs, GammaGL makes it simple to implement custom Graph Neural Networks (see [here](https://gammagl.readthedocs.io/en/latest/notes/create_gnn.html) for the accompanying tutorial).\nFor example, this is all it takes to implement the [edge convolutional layer](https://arxiv.org/abs/1801.07829) from Wang *et al.*:\n\n$$x_i^{\\prime} ~ = ~ \\max_{j \\in \\mathcal{N}(i)} ~ \\textrm{MLP}_{\\theta} \\left( [ ~ x_i, ~ x_j - x_i ~ ] \\right)$$\n\n```python\nimport tensorlayerx as tlx\nfrom tensorlayerx.nn import Sequential as Seq, Linear, ReLU\nfrom gammagl.layers import MessagePassing\n\nclass EdgeConv(MessagePassing):\n    def __init__(self, in_channels, out_channels):\n        super().__init__()\n        self.mlp = Seq(Linear(2 * in_channels, out_channels),\n                       ReLU(),\n                       Linear(out_channels, out_channels))\n\n    def forward(self, x, edge_index):\n        # x has shape [N, in_channels]\n        # edge_index has shape [2, E]\n\n        return self.propagate(x=x, edge_index,aggr_type='max')\n\n    def message(self, x_i, x_j):\n        # x_i has shape [E, in_channels]\n        # x_j has shape [E, in_channels]\n\n        tmp = tlx.concat([x_i, x_j - x_i], axis=1)  # tmp has shape [E, 2 * in_channels]\n        return self.mlp(tmp)\n```\n\n\n## How to Run\n\nTake [GCN](./examples/gcn) as an example:\n\n```bash\n# cd ./examples/gcn\n# set parameters if necessary\npython gcn_trainer.py --dataset cora --lr 0.01\n```\n\nIf you want to use specific `backend` or `GPU`, just set environment variable like:\n\n```bash\nCUDA_VISIBLE_DEVICES=\"1\" TL_BACKEND=\"paddle\" python gcn_trainer.py\n```\n\n\u003e Note\n\u003e \n\u003e The DEFAULT backend is  `torch` and GPU is `0`. \n\u003e\n\u003e The backend TensorFlow will take up all GPU left memory by default.\n\u003e \n\u003e The CANDIDATE backends are `tensorflow`, `paddle`, `torch` and `mindspore`.\n\u003e \n\u003e Set `CUDA_VISIBLE_DEVICES=\" \"` if you want to run it in CPU.\n\n## Supported Models\n\nNow, GammaGL supports about 70 models, we welcome everyone to use or contribute models.\n\n|                                                    | TensorFlow         | PyTorch            | Paddle             | MindSpore          |\n| -------------------------------------------------- | ------------------ | ------------------ | ------------------ | ------------------ |\n| [GCN [ICLR 2017]](./examples/gcn)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GAT [ICLR 2018]](./examples/gat)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GraphSAGE [NeurIPS 2017]](./examples/graphsage)   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [ChebNet [NeurIPS 2016]](./examples/chebnet)       | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GCNII [ICLR 2017]](./examples/gcnii)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n\n\u003cdetails\u003e\n\u003csummary\u003eYou may see the other models here.\u003c/summary\u003e\n\n|                                                    | TensorFlow         | PyTorch            | Paddle             | MindSpore          |\n| -------------------------------------------------- | ------------------ | ------------------ | ------------------ | ------------------ |\n| [JKNet [ICML 2018]](./examples/jknet)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [SGC [ICML 2019]](./examples/sgc)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GIN [ICLR 2019]](./examples/gin)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [APPNP [ICLR 2019]](./examples/appnp)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [AGNN [arxiv]](./examples/agnn)                    | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [SIGN [ICML 2020 Workshop]](./examples/sign)       | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [DropEdge [ICLR 2020]](./examples/dropedge)        | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GPRGNN [ICLR 2021]](./examples/gprgnn)            | :heavy_check_mark: | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [GNN-FiLM [ICML 2020]](./examples/film)            | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GraphGAN [AAAI 2018]](./examples/graphgan)        | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HardGAT [KDD 2019]](./examples/hardgat)           | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [MixHop [ICML 2019]](./examples/mixhop)            | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [PNA [NeurIPS 2020]](./examples/pna)               | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [FAGCN [AAAI 2021]](./examples/fagcn)              | :heavy_check_mark: | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [GATv2 [ICLR 2021]](./examples/gatv2)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GEN [WWW 2021]](./examples/gen)                   | :heavy_check_mark: | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [GAE [NeurIPS 2016]](./examples/vgae)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [VGAE [NeurIPS 2016]](./examples/vgae)             | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HCHA [PR 2021]](./examples/hcha)                  |                    | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [Node2Vec [KDD 2016]](./examples/node2vec)         | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [DeepWalk [KDD 2014]](./examples/deepwalk)         | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [DGCNN [ACM T GRAPHIC 2019]](./examples/dgcnn)     | :heavy_check_mark: | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [GaAN [UAI 2018]](./examples/gaan)                 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GMM [CVPR 2017]](./examples/gmm)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [TADW [IJCAI 2015]](./examples/tadw)               | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [MGNNI [NeurIPS 2022]](./examples/mgnni)           | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [CAGCN [NeurIPS 2021]](./examples/cagcn)           | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [DR-GST [WWW 2022]](./examples/drgst)              | :heavy_check_mark: | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [Specformer [ICLR 2023]](./examples/specformer)    |                    | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [CoGSL [WWW 2022]](./examples/cogsl)               |                    | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [AM-GCN [KDD 2020]](./examples/amgcn)              |                    | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [GGD [NeurIPS 2022]](./examples/ggd)               |                    | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [LTD [WSDM 2022]](./examples/ltd)                  |                    | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [Graphormer [NeurIPS 2021]](./examples/graphormer) |                    | :heavy_check_mark: |                    | :heavy_check_mark: |\n| [HiD-Net [AAAI 2023]](./examples/hid_net)          | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [FusedGAT [MLSys 2022]](./examples/fusedgat)       |                    | :heavy_check_mark: |                    |                    |\n| [GLNN [ICLR 2022]](./examples/glnn)                | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [DFAD-GNN [IJCAI 2022]](./examples/dfad_gnn)       |                    | :heavy_check_mark: |                    |                    |\n| [GNN-LF-HF [WWW 2021]](./examples/gnnlfhf)         |                    | :heavy_check_mark: |                    |                    |\n| [DNA [ICLR 2019]](./examples/dna)                  |                    | :heavy_check_mark: |                    |                    |\n\n\n| Contrastive Learning                           | TensorFlow         | PyTorch            | Paddle             | MindSpore          |\n| ---------------------------------------------- | ------------------ | ------------------ | ------------------ | ------------------ |\n| [DGI [ICLR 2019]](./examples/dgi)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GRACE [ICML 2020 Workshop]](./examples/grace) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [GRADE [NeurIPS 2022]](./examples/grade)       | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [MVGRL [ICML 2020]](./examples/mvgrl)          | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [InfoGraph [ICLR 2020]](./examples/infograph)  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [MERIT [IJCAI 2021]](./examples/merit)         | :heavy_check_mark: |                    | :heavy_check_mark: | :heavy_check_mark: |\n| [GNN-POT [NeurIPS 2023]](./examples/grace_pot) |                    | :heavy_check_mark: |                    |                    |\n| [MAGCL [AAAI 2023]](./examples/magcl)          | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [Sp2GCL [NeurIPS 2023]](./examples/sp2gcl)     |                    | :heavy_check_mark: |                    |                    |\n\n| Heterogeneous Graph Learning                       | TensorFlow         | PyTorch            | Paddle             | MindSpore          |\n| -------------------------------------------------- | ------------------ | ------------------ | ------------------ | ------------------ |\n| [RGCN [ESWC 2018]](./examples/rgcn)                | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HAN [WWW 2019]](./examples/han)                   | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HGT [WWW 2020]](./examples/hgt/)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [SimpleHGN [KDD 2021]](./examples/simplehgn)       | :heavy_check_mark: |                    |                    | :heavy_check_mark: |\n| [CompGCN [ICLR 2020]](./examples/compgcn)          |                    | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HPN [TKDE 2021]](./examples/hpn)                  | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [ieHGCN [TKDE 2021]](./examples/iehgcn)            | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [MetaPath2Vec [KDD 2017]](./examples/metapath2vec) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HERec [TKDE 2018]](./examples/herec)              | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |\n| [HeCo [KDD 2021]](./examples/heco)                 | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |                    |\n| [DHN [TKDE 2023]](./examples/dhn)                  |                    | :heavy_check_mark: |                    |                    |\n| [HEAT [T-ITS 2023]](./examples/heat)               |                    | :heavy_check_mark: |                    |                    |\n\n\u003e Note\n\u003e \n\u003e The models can be run in mindspore backend. Howerver, the results of experiments are not satisfying due to training component issue,\n\u003e which will be fixed in future.\n\u003c/details\u003e\n\n## Contributors\n\nGammaGL Team[GAMMA LAB] and Peng Cheng Laboratory.\n\nSee more in [CONTRIBUTING](./CONTRIBUTING.md).\n\nContribution is always welcomed. Please feel free to open an issue or email to yaoqiliu@bupt.edu.cn.\n\n## Cite GammaGL\nIf you use GammaGL in a scientific publication, we would appreciate citations to the following paper:\n\n```\n@inproceedings{10.1145/3539618.3591891,\nauthor = {Liu, Yaoqi and Yang, Cheng and Zhao, Tianyu and Han, Hui and Zhang, Siyuan and Wu, Jing and Zhou, Guangyu and Huang, Hai and Wang, Hui and Shi, Chuan},\ntitle = {GammaGL: A Multi-Backend Library for Graph Neural Networks},\nyear = {2023},\nisbn = {9781450394086},\npublisher = {Association for Computing Machinery},\naddress = {New York, NY, USA},\nurl = {https://doi.org/10.1145/3539618.3591891},\ndoi = {10.1145/3539618.3591891},\nbooktitle = {Proceedings of the 46th International ACM SIGIR Conference on Research and Development in Information Retrieval},\npages = {2861–2870},\nnumpages = {10},\nkeywords = {graph neural networks, frameworks, deep learning},\nlocation = {, Taipei, Taiwan, },\nseries = {SIGIR '23}\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbupt-gamma%2Fgammagl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbupt-gamma%2Fgammagl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbupt-gamma%2Fgammagl/lists"}