I wanna get the loss weighted by the path length between the negative node and the positive node (maybe the sampling weight also generate by this) in a hierarchical graph.
Dose DGL provide graph API for this usage?
I wanna get the loss weighted by the path length between the negative node and the positive node (maybe the sampling weight also generate by this) in a hierarchical graph.
Dose DGL provide graph API for this usage?
You could implement single-source-shortest-path using message passing:
g.ndata['x'] = torch.zeros(g.num_nodes())
g.ndata['x'][:] = 1000000 # very big number
g.ndata['x'][source] = 0
for _ in range(graph_diameter):
g.update_all(fn.u_add_e('x', 'distance', 'm'), fn.min('m', 'x'))
If you have multiple sources you can parallelize similarly. Note that this will give you a num_sources x num_nodes
distance tensor.