主要记录一下k_hop_subgraph在有向图里关于子图提取的需要注意的地方。
函数参数包括有k_hop_subgraph(
node_idx,
num_hops,
edge_index,
relabel_nodes=False,
num_nodes=None,
flow=‘source_to_target’,
),每个参数这里就不细讲了。
文档里该函数的描述为:Computes the :math:k-hop subgraph of :obj:edge_index around node
:attr:node_idx.
It returns (1) the nodes involved in the subgraph, (2) the filtered
:obj:edge_index connectivity, (3) the mapping from node indices in
:obj:node_idx to their new location, and (4) the edge mask indicating
which edges were preserved.
通过一些实验个人的理解是:对于给定节点或节点集node_idx,将其作为目标节点(如果为有向图),会先将所有能够通过num_hops跳到达该目标节点的节点(如果为有向图则为源节点)添加进subset(即第一个返回值),然后将连接这些节点的所有边(是所有边,无论是出边还是入边)都添加进子图的边集(第二个返回值)里。由于在处理有向图时关于边的提取有不太清楚的地方,特地做了一些实验,结果记录如下。

先给定一个图并可视化。

from torch_geometric.data import Data
from torch_geometric.utils import to_networkx, k_hop_subgraph
import networkx as nx
import matplotlib.pyplot as pltedge_index_original = torch.LongTensor([[0, 0, 1, 1, 2, 3, 3, 4, 4],[2, 4, 0, 2, 3, 2, 4, 3, 0]])
x_original = torch.ones(5, 1)
g = Data(edge_index=edge_index_original, x=x_original)
g = to_networkx(g)
nx.draw(g, with_labels=g.nodes)
plt.show()

得到图如下:
用k_hop_subgraph提取节点0的1跳子图:

k_hop_subgraph(node_idx=[0], num_hops=1, edge_index=g.edge_index)
"""
(tensor([0, 1, 4]),tensor([[0, 1, 4],[4, 0, 0]]),tensor([0]),tensor([False,  True,  True, False, False, False, False, False,  True]))
"""

输出的第一个参数为得到的子图节点,可以看到是不包含节点2的,因为节点2只是节点0的一个目标节点,不是源节点。另外,输出的第二个参数为得到的子图上的边集,可以看到是包含该子图上三个节点(0, 1, 4)的所有边的,即不仅包括了4指向0的边,也有0指向4的边。
同理,以下关于不同节点的子图提取的结果就很好理解了:

k_hop_subgraph(node_idx=[1], num_hops=1, edge_index=g.edge_index)
"""
(tensor([1]),tensor([], size=(2, 0), dtype=torch.int64),tensor([0]),tensor([False, False, False, False, False, False, False, False, False]))没有指向节点1的节点,故子图里只有自身。
"""
k_hop_subgraph(node_idx=[3], num_hops=1, edge_index=g.edge_index)
"""
(tensor([2, 3, 4]),tensor([[2, 3, 3, 4],[3, 2, 4, 3]]),tensor([1]),tensor([False, False, False, False,  True,  True,  True,  True, False]))输出的子图的边集里有连接节点2,3,4的所有边,不分方向。"""

torch_geometric.utils.k_hop_subgraph相关推荐

  1. torch_geometric 笔记:TORCH_GEOMETRIC.UTILS(更新中)

    1 torch_geometric.utils.add_self_loops add_self_loops(edge_index, edge_weight: Optional[torch.Tensor ...

  2. torch_geometric笔记:nn. graclus (图点分类)

    torch_geometric.nn.graclus(edge_index, weight: Optional[torch.Tensor] = None, num_nodes: Optional[in ...

  3. torch_geometric 笔记:nn.ChebNet

    1 理论部分 交通预测论文翻译:Deep Learning on Traffic Prediction: Methods,Analysis and Future Directions_UQI-LIUW ...

  4. PyTorch Geometric(PyG) torch_geometric.nn.conv.gcn_conv源码详解

    这个类继承自MessagePassing也就是Convolutional Layers import torch from torch.nn import Parameter from torch_s ...

  5. torch_geometric

    https://pytorch-geometric.readthedocs.io/en/latest/modules/nn.html#torch_geometric.nn.conv.SAGEConv ...

  6. torch_geometric 介绍

    官网:torch_geometric.nn - pytorch_geometric documentation PyTorch Geometric 简称PYG是一个基于PyTorch的库,可轻松编写和 ...

  7. 正确安装 torch_geometric库

    step1: 查看pytorch+cuda 版本 torch-scatter torch-sparse torch-cluster torch-spline-conv 这些关联包要与torch版本匹配 ...

  8. 第十七课.Pytorch-geometric入门(二)

    目录 消息传递 MessagePassing Base Class 简单GCN层的实现 实现边卷积(Edge Convolution) 创建自定义数据集 创建"In Memory Datas ...

  9. 轻量级图卷积网络LightGCN介绍和构建推荐系统示例

    来源:DeepHub IMBA 本文约4500字,建议阅读9分钟 今天介绍的这个模型被称作:Light Graph Convolution Network 或 LightGCN¹. 推荐系统是当今业界 ...

最新文章

  1. C++11 带来的新特性 (2)—— 统一初始化(Uniform Initialization)
  2. cfa三级真题和mock_两年高分过CFA三级的女学霸:复习秘诀刷爆了朋友圈!
  3. 关于信噪比的确切含义——Eb/No和SNR的区别
  4. 如何构建可视化的营销数据大屏?
  5. 招聘面试的套路和原则
  6. 2018年第九届蓝桥杯 - 省赛 - C/C++大学B组 - G.螺旋折线
  7. 细学PHP 09 MySql
  8. oracle with和insert结合使用
  9. 【图像隐写】基于matlab DCT数字水印嵌入+攻击+提取【含Matlab源码 1758期】
  10. Cross Compile libdnet and Python for Montavista/PowerPC
  11. mac环境变量配置文件加载优先级
  12. 动词的过去式过去分词表
  13. UE4 Text Render 中文字体制作
  14. R语言中dim函数_R语言入门:函数介绍(3)—— %gt;%
  15. simulink简介
  16. python借助OpenCC实现中文繁体转简体
  17. 如何在电脑中找到Win10自带锁屏壁纸
  18. conda 虚拟环境生成对应不同的jupyter快捷方式
  19. 柯桥西班牙语培训,西班牙语关于篮球的词汇
  20. ubuntu20.04启动时黑屏

热门文章

  1. origin论文画图记录
  2. 半小时学会在Win10上部署K8S,玩转云原生【全干货,建议收藏】
  3. apicloud命名空间$api方法集合
  4. Python调用API接口,实现人脸识别
  5. 浪潮服务器NF5280m5 raid硬盘驱动 配置,raid和系统
  6. Ray-分布式的SGD
  7. web程序安装说明书
  8. centos7安装WGCLOUD说明
  9. html里面a标签点击时去除下划线
  10. Matlab(Simulink)+ANSYS Simplorer+Maxwell联合仿真(一)——软件选取问题