Files
dmlc--dgl/examples/pytorch/node2vec/utils.py
T
2026-07-13 13:35:51 +08:00

65 lines
2.0 KiB
Python

import argparse
from ogb.linkproppred import *
from ogb.nodeproppred import *
from dgl.data import CitationGraphDataset
def load_graph(name):
cite_graphs = ["cora", "citeseer", "pubmed"]
if name in cite_graphs:
dataset = CitationGraphDataset(name)
graph = dataset[0]
nodes = graph.nodes()
y = graph.ndata["label"]
train_mask = graph.ndata["train_mask"]
val_mask = graph.ndata["test_mask"]
nodes_train, y_train = nodes[train_mask], y[train_mask]
nodes_val, y_val = nodes[val_mask], y[val_mask]
eval_set = [(nodes_train, y_train), (nodes_val, y_val)]
elif name.startswith("ogbn"):
dataset = DglNodePropPredDataset(name)
graph, y = dataset[0]
split_nodes = dataset.get_idx_split()
nodes = graph.nodes()
train_idx = split_nodes["train"]
val_idx = split_nodes["valid"]
nodes_train, y_train = nodes[train_idx], y[train_idx]
nodes_val, y_val = nodes[val_idx], y[val_idx]
eval_set = [(nodes_train, y_train), (nodes_val, y_val)]
else:
raise ValueError("Dataset name error!")
return graph, eval_set
def parse_arguments():
"""
Parse arguments
"""
parser = argparse.ArgumentParser(description="Node2vec")
parser.add_argument("--dataset", type=str, default="cora")
# 'train' for training node2vec model, 'time' for testing speed of random walk
parser.add_argument("--task", type=str, default="train")
parser.add_argument("--runs", type=int, default=10)
parser.add_argument("--device", type=str, default="cpu")
parser.add_argument("--embedding_dim", type=int, default=128)
parser.add_argument("--walk_length", type=int, default=50)
parser.add_argument("--p", type=float, default=0.25)
parser.add_argument("--q", type=float, default=4.0)
parser.add_argument("--num_walks", type=int, default=10)
parser.add_argument("--epochs", type=int, default=100)
parser.add_argument("--batch_size", type=int, default=128)
args = parser.parse_args()
return args