PyTorch第三方库 2. GNN使用PyG的实现

目录
1. 预备知识
GNN
2. GNN使用PyG(第三方库)的实现
官方文档
1.
继承基类的
2. 节点/边表征以及图表征
node /edge level:
graph level:节点嵌入——节点表征——图池化——图的表征——线性变换
【‘sclub 数据集进行PyG小白入门实战】
1. 数据集
2. 数据集展示(使用可视化展示)
3. Graph网络定义
4. 输出特征展示
5. 训练模型(Semi-)
【一些PyG的数据类型】
Data 类(PyG的数据结构)
Batch类【详情可参考】
batch属性说明
3. 生化任务的一些第三方包
rdkit官方文档
1. 如何画分子&一些分子操作方法的引入
Some
2. 子结构搜索&分子指纹
4. 引用
?一些视频【强烈安利】
其他
1. 预备知识 GNN
GNN可以被抽象为和两个步骤,分为MPNN()和NLNN(Non-local)
(1)公式中h代表各个层中某个节点的隐向量,它是随机初始化的(或者加入原有节点特征) 。a是某个节点i,对于他的邻居j们,通过某个聚合函数(sum、...)获得的消息(在代码中可能会使用. 做/运算) 。
通过某个函数将(l-1)层的隐向量和(l)层的消息(消息传递框架中也叫做),就能够获得(l)层的隐向量 。
此外,仅仅获得每个节点的隐向量还不足以表征整个图,所以需要一个图读出()函数来将很多节点的隐向量表征为一个统一长度的向量表示 。
这个 可以是对各个节点的隐向量做max 、 获得特征(graph 操作:在代码中可能会使用. 做/运算);也可以是引入一个上帝节点连接每个图中的节点,取最后一层中上帝节点的隐向量作为表征;还可以是、Edge 、等方法 。
广义角度上的理解,可参考此文:图机器学习——5.5 广义 GNN 框架:消息传递与聚合广小隶的博客-CSDN博客_gnn聚合5. 广义视角下的 GNN 框架GNN 层的本质为:消息() + 聚合() 。在这一视角下的有许多不同的实例:GCN,,GAT等,下面我们将着重讲解这三个不同的实例 。GNN 的总体框架分别包括:1)消息 与 2)聚合,也就是一个网络层中的操作 。3)层与层之间的连接4)图增广(Graph ) 与 5)学习目标( )下面我们一部分一部分进行分析 。1)消息()图网络中的
~~~Rate-1--blog-.&-=..none-task-blog-2~~~Rate-1--blog-.&=1
2. GNN使用PyG(第三方库)的实现 官方文档

,简称Pyg 。Pyg库包含易用的小批量加载器(mini-batch )、多GPU支持、大量常见基准数据集和有用的变换,适用于任意图像、三维网格(3D mesh)和点云 。基于构建,用于处理不规则结构化输入数据(如图、点云、流形) 。除了一般的图形数据结构和处理方法外,它还包含从关系学习到3D数据处理等领域中最新发布的多种方法 。通过利用稀疏 GPU 加速、提供专用的 CUDA 内核以及为不同大小的输入样本引入高效的小批量处理,实现了很高的数据吞吐量 。
安装踩坑过后的友情提示:建议严格参考官方安装说明!!!
(踩坑解决详情见4的其他部分) - pyg-team/: Graphforfor .to pyg-team/byanon .

PyTorch第三方库  2. GNN使用PyG的实现

文章插图
1.
消息传递范式是一种聚合邻接节点信息(称为邻域聚合,节点的邻居的消息聚合到节点本身)来更新中心节点信息的范式,它将卷积算子推广到了不规则数据领域,实现了图与神经网络的连接 。消息传递的详情可参考,讲得很清晰:图神经网络task2——消息传递的博客-CSDN博客这是目录1、消息传递范式2、基类2.1、MP类和基本方法3、实例3.1、三个函数的数学定义3.2、``实现步骤(1)向邻接矩阵添加自环边(2)对节点的特征矩阵进行线性变换(3)对变换后的节点特征进行标准化(4)归一化j中的节点特征(5)将节点特征求和参考文献1、消息传递范式消息传递是实现GNN的一种通用框架和编程范式 。它从聚合与更新的角度归纳总结了多种GNN模型的实现,它的思路是:首先结合边的特征以及和边相连的两个节点的特征,得到