dgl.sampling.node2vec_random_walk
- dgl.sampling.node2vec_random_walk(g, nodes, p, q, walk_length, prob=None, return_eids=False)[source]
基于 node2vec 模型,从起始节点数组生成随机游走轨迹。论文:node2vec: 可扩展的网络特征学习。
返回的轨迹长度均为
walk_length + 1
,其中第一个节点是起始节点本身。注意,如果随机游走提前停止,DGL 会用 -1 填充轨迹以保持相同长度。
- 参数:
g (DGLGraph) –
图。必须在 CPU 上。
注意 node2vec 只支持同质图。
nodes (Tensor) –
随机游走轨迹开始的节点 ID 张量。
张量必须在 CPU 上,并且必须与图的 ID 类型具有相同的数据类型。
p (float) – 在游走中立即重新访问节点的可能性。
q (float) – 用于在广度优先策略和深度优先策略之间进行插值的控制参数。
walk_length (int) – 随机游走的长度。
prob (str, 可选) –
图上存储与每条边关联的(未归一化的)选择下一个节点的概率的边特征张量的名称。
特征张量必须是非负的,并且所有节点的出边概率之和必须为正(尽管它们不必总和为一)。否则结果将是未定义的。
如果省略,DGL 假定邻居是均匀选择的。
return_eids (bool, 可选) –
如果为 True,则额外返回遍历的边 ID。
默认值:False。
- 返回值:
traces (Tensor) – 一个二维节点 ID 张量,形状为
(num_seeds, walk_length + 1)
。eids (Tensor, 可选) – 一个二维边 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]]))