图神经网络与pytorch

目录

一、图神经网络架构pytorch

1.GCNConv

[(1)、数学公式(标准 GCN)](#(1)、数学公式(标准 GCN))

(2)一个例子

(3)、解释一下

2.归一化层

(1).定义

(2).一个例子

3.GATConv

(1)、如何计算的

🕐计算原始注意力系数:

(2)、多头注意力机制


一、图神经网络架构pytorch

1.GCNConv

python 复制代码
        self.conv1 = GCNConv(in_dim, hidden_dim)

(1)、数学公式(标准 GCN)

(2)一个例子

图结构内容如下

邻接矩阵 A(不含自环)

计算归一化系数

假设每个节点 1 维特征(为了好算):

线性变换权重 W

先算 XW

之后有

(3)、解释一下

对于每个结点来说,他的来源包括自己以及和自己相连的其他结点的内容。归一化就是让自己的数据/根号下结点的度 + 其他数据/根号下结点的度。但是由于度越大,结合的数据越多,所以还要在外面进行归一化,/根号下结点的度。

第一步计算每个结点和权重矩阵处理后的结果

第二步是每个结点的数据与他相连的数据,归一化后求和

第三步是 对计算的结果进行最后的归一化

2.归一化层

python 复制代码
self.norm1 = nn.LayerNorm(hidden_dim)

不跨节点、不跨 batch、不关心图大小

(1).定义

(2).一个例子

假设某个节点经过 GCNConv 后:

h_i = [100, 0.1, -3, 2, 50]

这会导致:

  • 后面的 ReLU / Linear 非常不稳定

  • PPO 的 value / logit 很容易炸

LayerNorm 会把它拉成:

h_i ≈ [1.2, -0.8, -1.1, -0.6, 1.3]

👉 形状不变,尺度统一

3.GATConv

python 复制代码
self.conv1 = GATConv(in_dim, hidden_dim, heads=heads, concat=True)  # 注意:concat=True 表示将每个头的输出拼接

(1)、如何计算的

🕐计算原始注意力系数

🕑对所有邻居进行计算

对于节点 i 的每个邻居节点 j,都需要计算上述的注意力系数。通过这种方式,我们可以得到所有邻居节点的注意力系数。注意这个邻居也包括他自己

🕑注意力系数的归一化

🕑加权聚合邻居特征

(2)、多头注意力机制

把上面的过程复制几次,那么每个结点都可以得到很多个维度一样的特征,把这个特征拼接在一起,就是多头注意力机制。

下图中一条颜色的线,就可以表示一个注意力头。

相关推荐
小笼包包仔12 分钟前
OpenClaw 多Agent软件开发最佳实践指南
人工智能
smallyoung22 分钟前
AgenticRAG:智能体驱动的检索增强生成
人工智能
_skyming_28 分钟前
OpenCode 如何做到结果不做自动质量评估,为什么结果还不错?
人工智能
南山安1 小时前
手写 Cursor 核心原理:从 Node.js 进程到智能 Agent
人工智能·agent·设计
掘金安东尼1 小时前
如何为 AI 编码代理配置 Next.js 项目
人工智能
aircrushin2 小时前
轻量化大模型架构演进
人工智能·架构
文心快码BaiduComate2 小时前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南3 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia4 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮4 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能