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

63 lines
1.5 KiB
Python

import time
from dgl.sampling import node2vec_random_walk
from model import Node2vecModel
from utils import load_graph, parse_arguments
def time_randomwalk(graph, args):
"""
Test cost time of random walk
"""
start_time = time.time()
# default setting for testing
params = {"p": 0.25, "q": 4, "walk_length": 50}
for i in range(args.runs):
node2vec_random_walk(graph, graph.nodes(), **params)
end_time = time.time()
cost_time_avg = (end_time - start_time) / args.runs
print(
"Run dataset {} {} trials, mean run time: {:.3f}s".format(
args.dataset, args.runs, cost_time_avg
)
)
def train_node2vec(graph, eval_set, args):
"""
Train node2vec model
"""
trainer = Node2vecModel(
graph,
embedding_dim=args.embedding_dim,
walk_length=args.walk_length,
p=args.p,
q=args.q,
num_walks=args.num_walks,
eval_set=eval_set,
eval_steps=1,
device=args.device,
)
trainer.train(
epochs=args.epochs, batch_size=args.batch_size, learning_rate=0.01
)
if __name__ == "__main__":
args = parse_arguments()
graph, eval_set = load_graph(args.dataset)
if args.task == "train":
print("Perform training node2vec model")
train_node2vec(graph, eval_set, args)
elif args.task == "time":
print("Timing random walks")
time_randomwalk(graph, args)
else:
raise ValueError("Task type error!")