dgl.sampling.node2vec_random_walk
- dgl.sampling.node2vec_random_walk(g, nodes, p, q, walk_length, prob=None, return_eids=False)[source]
基于node2vec模型从起始节点数组中生成随机游走轨迹。 论文: node2vec: Scalable Feature Learning for Networks.
返回的轨迹长度均为
walk_length + 1
,其中第一个节点是起始节点本身。请注意,如果随机游走提前停止,DGL 会用 -1 填充轨迹以保持相同的长度。
- Parameters:
g (DGLGraph) –
图。必须在CPU上。
请注意,node2vec仅支持同构图。
nodes (Tensor) –
随机游走轨迹开始的节点ID张量。
该张量必须在CPU上,并且必须与图的ID类型具有相同的数据类型。
p (float) – 在游走中立即重新访问一个节点的可能性。
q (float) – 控制参数,用于在广度优先策略和深度优先策略之间进行插值。
walk_length (int) – 随机游走的长度。
prob (str, optional) –
图中存储的边特征张量的名称,该张量包含与每条边相关的(未归一化的)概率,用于选择下一个节点。
特征张量必须是非负的,并且所有节点的出边的概率之和必须为正(尽管它们不必总和为一)。否则,结果将是未定义的。
如果省略,DGL 假设邻居是均匀选择的。
return_eids (bool, optional) –
If True, additionally return the edge IDs traversed.
Default: False.
- Returns:
traces (Tensor) – 一个2维的节点ID张量,形状为
(num_seeds, walk_length + 1)
。eids (Tensor, optional) – 一个2维的边ID张量,形状为
(num_seeds, length)
。 仅在return_eids
为 True 时返回。
示例
>>> g1 = dgl.graph(([0, 1, 1, 2, 3], [1, 2, 3, 0, 0])) >>> dgl.sampling.node2vec_random_walk(g1, [0, 1, 2, 0], 1, 1, walk_length=4) tensor([[0, 1, 3, 0, 1], [1, 2, 0, 1, 3], [2, 0, 1, 3, 0], [0, 1, 2, 0, 1]])
>>> dgl.sampling.node2vec_random_walk(g1, [0, 1, 2, 0], 1, 1, walk_length=4, return_eids=True) (tensor([[0, 1, 3, 0, 1], [1, 2, 0, 1, 2], [2, 0, 1, 2, 0], [0, 1, 2, 0, 1]]), tensor([[0, 2, 4, 0], [1, 3, 0, 1], [3, 0, 1, 3], [0, 1, 3, 0]]))