# coding: utf-8 import random import math import torch import dgl import graphgallery from graphgallery.datasets import Planetoid print("GraphGallery version: ", graphgallery.__version__) print("PyTorch version: ", torch.__version__) print("DGL version: ", dgl.__version__) ''' Load Datasets - cora/citeseer/pubmed ''' data = Planetoid('cora', root="~/GraphData/datasets/", verbose=False) graph = data.graph device = torch.device('cuda') if torch.cuda.is_available() else torch.device( 'cpu') # splits = data.split_nodes() graphgallery.set_backend("dgl") # experimental setup in # `When Do GNNs Work: Understanding and Improving Neighborhood Aggregation # <https://www.ijcai.org/Proceedings/2020/0181.pdf>` random.seed(2020) split = 0.01 n_nodes = graph.num_nodes sample_size = math.ceil(n_nodes * split) train_idx = random.sample(range(n_nodes - 1000), sample_size) train_nodes = [idx if idx < 500 else idx + 1000 for idx in train_idx]
#!/usr/bin/env python # coding: utf-8 import torch import dgl import graphgallery print("GraphGallery version: ", graphgallery.__version__) print("Torch version: ", torch.__version__) print("DGL version: ", dgl.__version__) ''' Load Datasets - cora/citeseer/pubmed ''' from graphgallery.datasets import Planetoid data = Planetoid('cora', root="~/GraphData/datasets/", verbose=False) graph = data.graph splits = data.split_nodes() graphgallery.set_backend("dgl") from graphgallery.gallery import GCN model = GCN(graph, attr_transform="normalize_attr", device="gpu", seed=123) model.build() his = model.train(splits.train_nodes, splits.val_nodes, verbose=1, epochs=100) results = model.test(splits.test_nodes) print(f'Test loss {results.loss:.5}, Test accuracy {results.accuracy:.2%}')
# coding: utf-8 import torch import graphgallery import torch_geometric from graphgallery.gallery import callbacks from graphgallery.datasets import Planetoid print("GraphGallery version: ", graphgallery.__version__) print("PyTorch version: ", torch.__version__) print("Torch_Geometric version: ", torch_geometric.__version__) ''' Load Datasets - cora/citeseer/pubmed ''' data = Planetoid('cora', root="~/GraphData/datasets/", verbose=False) graph = data.graph splits = data.split_edges(random_state=15) device = torch.device('cuda') if torch.cuda.is_available() else torch.device('cpu') graphgallery.set_backend("pyg") from graphgallery.gallery.linkpred import GAE, VGAE trainer = GAE(device=device, seed=123).setup_graph(graph).build() # trainer = VGAE(device=device, seed=123).setup_graph(graph).build() cb = callbacks.ModelCheckpoint('model.pth', monitor='val_ap') trainer.fit(splits.train_pos_edge_index, val_data=(splits.val_pos_edge_index, splits.val_neg_edge_index), verbose=1, callbacks=[cb]) results = trainer.evaluate((splits.test_pos_edge_index, splits.test_neg_edge_index)) print(results)