图注意力神经网络的pytorch代码解析

本文详细介绍了图注意力神经网络(GAT)的基本原理,包括注意力机制的公式和多头注意力的应用。接着,对GAT的PyTorch实现进行了深入解析,从数据加载、模型搭建、模型训练到模型测试的全过程。GAT模型通过注意力机制实现了节点特征的加权融合,多头注意力则增强了模型的表达能力。在训练过程中,使用了Adam优化器和交叉熵损失函数,同时进行了训练集和验证集的性能评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.图注意力神经网络的原理简介

图注意网络的原理介绍有很多,可以参考知乎文章:向往的GAT(图注意力模型)。作者是清华大学的一个博士,他写的图卷积原理非常透彻,这里对于图注意力的描述也很好。

为了让后面的代码介绍更清楚,本文再重述一下注意力公式和多头注意力的原理。

1.1 注意力机制的公式

(1)计算注意力系数(attention coefficient)
对于顶点 i i i ,逐个计算它的邻居们( j ∈ N i j\in{N_i} jNi)和它自己之间的相似系数:
e i j = a ( [ W h i ∣ ∣ W h j ] ) , j ∈ N i e_{ij}=a([Wh_i||Wh_j]),j\in{N_i} eij=a([WhiWhj]),jNi
h i h_i hi h j h_j hj分别为中心节点及其邻居节点的特征。 W W W的作用在于对特征进行映射,提高特征的表达能力, [ ∗ ∣ ∣ ∗ ] [*||*] []表示拼接,将映射之后的特征进行组合,并通过 a ( ∗ ) a(*) a()映射成一个实数,作者通过单层前馈神经网络实现。然后通过类似于softmax的方法求解注意力系数:
α i j = e x p ( L e a k y R e L U ( e i j ) ) ∑ k ∈ N i e x p ( L e a k y R e L U ( e i k ) ) \alpha_{ij}=\frac{exp(LeakyReLU(e_{ij}))}{\sum_{k\in{N_i}}exp(LeakyReLU(e_{ik}))} αij=kNiexp(LeakyReLU(eik))exp(LeakyReLU(eij))

(2)特征的聚合
将计算好的注意力系数作为融合权重,对邻居节点的特征进行聚合:
h i ′ ( K ) = δ ( ∑ j ∈ N i α i j W h j ) h^{'}_{i}(K) = \delta(\sum_{j\in{N_i}}\alpha_{ij}Wh_j) hi(K)=δ(j

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值