dgl模块的in_subgraph

文章介绍了DGL库中用于创建和操作图的函数,特别是`in_subgraph`函数,该函数根据输入的节点ID返回与其相连的入边。通过三个案例展示了`in_subgraph`如何工作,证明了它确实返回指向输入节点的所有边。案例涉及图的构建、子图提取及可视化,进一步阐述了图数据结构在图神经网络中的应用。
摘要由CSDN通过智能技术生成

一、构图:

import dgl
import torch
# Source nodes for edges (2, 1), (3, 2), (4, 3)
src_ids = torch.tensor([2, 3, 4])
# Destination nodes for edges (2, 1), (3, 2), (4, 3)
dst_ids = torch.tensor([15, 16, 17])
g1 = dgl.graph((src_ids, dst_ids))
fig, ax = plt.subplots()
nx.draw(g1.to_networkx(), ax=ax)

在这里插入图片描述

二、in_subgraph探究

案例1

g1_sub1 = dgl.in_subgraph(g1, [17, 16])
g1_sub1.edges()
output:
(tensor([4, 3]), tensor([17, 16]))
可视化:
fig, ax = plt.subplots()
nx.draw(g1_sub1.to_networkx(), ax=ax)

在这里插入图片描述

案例2

g1_sub2 = dgl.in_subgraph(g1, [3, 4])
g1_sub2.edges()
output:
(tensor([], dtype=torch.int64), tensor([], dtype=torch.int64))
可视化:
fig, ax = plt.subplots()
nx.draw(g1_sub2.to_networkx(), ax=ax)

在这里插入图片描述

案例3

g1_sub3 = dgl.in_subgraph(g1, [16])
fig, ax = plt.subplots()
nx.draw(g1_sub3.to_networkx(), ax=ax)

在这里插入图片描述

三、结论假设:

in_subgraph函数:通过输入节点ID返回连接它的边,方向一定是指向它的;

四、假设验证:

案例1

g4 = dgl.heterograph({ ('user', 'plays', 'game'): ([0, 1, 1, 2, 10], [0, 0, 2, 1, 10]), ('user', 'follows', 'user'): ([0, 1, 2], [1, 0, 0])})
sub_g = g4.in_subgraph({'user': [2], 'game': [2]})
sub_g
output:
Graph(num_nodes={'game': 11, 'user': 11},
      num_edges={('user', 'follows', 'user'): 0, ('user', 'plays', 'game'): 1},
      metagraph=[('user', 'user', 'follows'), ('user', 'game', 'plays')])

案例2

g4 = dgl.heterograph({ ('user', 'plays', 'game'): ([0, 1, 1, 2, 10], [0, 0, 2, 1, 10]), ('user', 'follows', 'user'): ([0, 1, 2], [1, 2, 0])})
sub_g = g4.in_subgraph({'user': [2], 'game': [2]})
sub_g
output:
Graph(num_nodes={'game': 11, 'user': 11},
      num_edges={('user', 'follows', 'user'): 1, ('user', 'plays', 'game'): 1},
      metagraph=[('user', 'user', 'follows'), ('user', 'game', 'plays')])

结论:假设是正确的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值