New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

GSLB

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

GSLB

GSLB: Graph Structure Learning Benchmark

  • 0.1.0
  • PyPI
  • Socket score

Maintainers
1

logo

Graph Structure Learning Benchmark (GSLB)

GSLB is a Graph Structure Learning (GSL) library and benchmark based on DGL and PyTorch. We integrate diverse datasets and state-of-the-art GSL models.

📔 What is Graph Structure Learning?

pipeline

Graph Structure Learning (GSL) aims to optimize both the parameters of Graph Neural Networks (GNNs) and the computation graph structure simultaneously. GSL methods start with input features and an optimal initial graph structure. Its corresponding computation graph is iteratively refined through a structure learning module. With the refined computation graph ,GNNs are used to generate graph representations. Then parameters of the GNNs and the structure modeling module are jointly updated, either simultaneously or alternatively, util a preset stopping condition is satisfied.

If you want to explore more information about GSL, please refer to our survey and paper collection.

🚀 Get Start

Requirements

GSLB needs the following requirements to be satisfied beforehand:

  • Python 3.8+
  • PyTorch 1.13
  • DGL 1.1+
  • Scipy 1.9+
  • Scikit-learn
  • Numpy
  • NetworkX
  • ogb
  • tqdm
  • easydict
  • PyYAML

Usage

If you want to quickly run an existing GSL model on a graph dataset:

python main.py --dataset dataset_name --model model_name -n num_trails -g 0 --use_knn -k 5 --use_mettack --sparse --metric acc -p 0. --drop_rate 0. --add_rate 0.

Optional arguments:

--dataset : the name of graph dataset

--model : the name of GSL model

--ntrail -n : repetition count of experiments

--use_knn : whether to use knn graph instead of the original graph

--k : the number of the nearest neighbors

--drop_rate : the probability of randomly edge deletion

--add_rate : the probability of randomly edge addition

--use_mettack : whether to use the structure after being attacked by mettack

--ptb_rate -p : the perturbation rate

--metric : the evaluation metric

--gpu_num -g : the selected GPU number

Example: Train GRCN on Cora dataset, with the evaluation metric is accuracy.

python main.py --dataset cora --model GRCN --metric acc

Step 1: Load datasets

from GSL.data import *

# load a homophilic or heterophilic graph dataset
data = Dataset(root='/tmp/', name='cora')

# load a perturbed graph dataset
data = Dataset(root='/tmp/', name='cora', use_mettack=True, ptb_rate=0.05)

# load a heterogeneous graph dataset
data = HeteroDataset(root='/tmp/', name='acm')

# load a graph-level dataset
data = GraphDataset(root='/tmp/', name='IMDB-BINARY', model='GCN')

Step 2: Initialize the GSL model

from GSL.model import *
from GSL.utils import accuracy, macro_f1, micro_f1

model_name = 'GRCN'
metric = 'acc'
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# the hyper-parameters are recorded in config
config_path = './configs/{}_config.yaml'.format(model_name.lower())

# select a evaluation metric
eval_metric = {
  'acc': accuracy,
  'macro-f1': macro_f1,
  'micro-f1': micro_f1
}[metric]

model = GRCN(data.num_feat, data.num_class, evel_metric,
            config_path, dataset_name, device)

Step 3: Train GSL model

model.fit(data)

🧩 Implementation Algorithms

Currently, we have implement the following GSL algorithms:

  • GRCN [ECML PKDD 2020], Graph-Revised Convolutional Network
  • ProGNN [KDD 2020], Graph structure learning for robust graph neural networks
  • IDGL [NeurIPS 2020], Iterative Deep Graph Learning for Graph Neural Networks: Better and Robust Node Embeddings
  • GEN [WWW 2021], Graph Structure Estimation Neural Networks
  • CoGSL [WWW 2022], Compact Graph Structure Learning via Mutual Information Compression
  • SLAPS [NeurIPS 2021], SLAPS: Self-Supervision Improves Structure Learning for Graph Neural Networks
  • SUBLIME [WWW 2022], Towards Unsupervised Deep Graph Structure Learning
  • STABLE [KDD 2022], Reliable Representations Make A Stronger Defender: Unsupervised Structure Refinement for Robust GNN
  • NodeFormer [NeurIPS 2022], NodeFormer: A Scalable Graph Structure Learning Transformer for Node Classification
  • HES-GSL [TNNLS 2023], Homophily-Enhanced Self-Supervision for Graph Structure Learning: Insights and Directions
  • GTN [NeurIPS 2020], Graph Transformer Networks
  • HGSL [AAAI 2021], Heterogeneous Graph Structure Learning for Graph Neural Networks
  • HGP-SL [AAAI 2020], Hierarchical Graph Pooling with Structure Learning
  • VIB-GSL [AAAI 2022], Graph Structure Learning with Variational Information Bottleneck

Candidate algorithms

  • NeuralSparse [ICML 2020], Robust Graph Representation Learning via Neural Sparsification
  • PTDNet [WSDM 2021], Learning to Drop: Robust Graph Neural Network via Topological Denoising

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc