论文阅读和分析: “How Attentive are Graph Attention Networks?”

下面所有博客是个人对EEG脑电的探索,项目代码是早期版本不完整,需要完整项目代码和资料请私聊。


数据集
1、脑电项目探索和实现(EEG) (上):研究数据集选取和介绍SEED
相关论文阅读分析:
1、EEG-SEED数据集作者的—基线论文阅读和分析
2、图神经网络EEG论文阅读和分析:《EEG-Based Emotion Recognition Using Regularized Graph Neural Networks》
3、EEG-GNN论文阅读和分析:《EEG Emotion Recognition Using Dynamical Graph Convolutional Neural Networks》
4、论文阅读和分析:Masked Label Prediction: Unified Message Passing Model for Semi-Supervised Classification
5、论文阅读和分析:《DeepGCNs: Can GCNs Go as Deep as CNNs?》
6、论文阅读和分析: “How Attentive are Graph Attention Networks?”
7、论文阅读和分析:Simplifying Graph Convolutional Networks

8、论文阅读和分析:LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation
9、图神经网络汇总和总结
相关实验和代码实现:
1、用于图神经网络的脑电数据处理实现_图神经网络 脑电
2、使用GCN训练和测试EEG的公开SEED数据集
3、使用GAT训练和测试EEG公开的SEED数据集
4、使用SGC训练和测试SEED数据集
5、使用Transformer训练和测试EEG的公开SEED数据集_eeg transformer
6、使用RGNN训练和测试EEG公开的SEED数据集
辅助学习资料:
1、官网三个简单Graph示例说明三种层次的应用_graph 简单示例
2、PPI数据集示例项目学习图神经网络
3、geometric库的数据处理详解
4、NetworkX的dicts of dicts以及解决Seven Bridges of Königsberg问题
5、geometric源码阅读和分析:MessagePassin类详解和使用
6、cora数据集示例项目学习图神经网络
7、Graph 聚合
8、QM9数据集示例项目学习图神经网络
9、处理图的开源库

基本

GAT的缺点:

GAT计算的注意力非常有限:注意力得分的排名不受查询节点的限制。将这种受限的注意力正式定义为静态注意力。因为GAT使用静态注意力机制,所以存在GAT无法表达的简单图形问题:在受控问题中,发现静态注意力阻碍GAT甚至无法拟合训练数据。

提出GATv2:

一个动态图注意力变体,它比GAT更具表达力。进行了广泛的评估,表明GATv2在12个OGB和其他基准测试中优于GAT,同时匹配其参数成本。代码位于https://github.com/tech-srl/how_attentive_are_gats。GATv2 is available as part of the PyTorch Geometric library,
the DeepGraph Library,and the TensorFlow GNN library.
1、from torch_geometric.nn.conv.gatv2_conv import GATv2Conv
2、from dgl.nn.pytorch import GATv2Conv
3、from tensorflow_gnn.graph.keras.layers.gat_v2 import GATv2Convolution

结果:

在这里插入图片描述

算法理论:

和GAT相比, a T a^T aT的位置改变;
x i ′ = α i , i Θ x i + ∑ j ∈ N ( i ) α i , j Θ x j , \mathbf{x}^{\prime}_i = \alpha_{i,i}\mathbf{\Theta}\mathbf{x}_{i} + \sum_{j \in \mathcal{N}(i)} \alpha_{i,j}\mathbf{\Theta}\mathbf{x}_{j}, xi=αi,iΘxi+jN(i)αi,jΘxj,
注意力权重:
α i , j = exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i ∥ x j ] ) ) ∑ k ∈ N ( i ) ∪ { i } exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i ∥ x k ] ) ) . \alpha_{i,j} = \frac{ \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_j] \right)\right)} {\sum_{k \in \mathcal{N}(i) \cup \{ i \}} \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_k] \right)\right)}. αi,j=kN(i){i}exp(aLeakyReLU(Θ[xixk]))exp(aLeakyReLU(Θ[xixj])).
If the graph has multi-dimensional edge features e i , j \mathbf{e}_{i,j} ei,j the attention coefficients α i , j \alpha_{i,j} αi,j are computed as:
α i , j = exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i ∥ x j ∥ e i , j ] ) ) ∑ k ∈ N ( i ) ∪ { i } exp ⁡ ( a ⊤ L e a k y R e L U ( Θ [ x i ∥ x k ∥ e i , k ] ) ) . \alpha_{i,j} = \frac{ \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_j \, \Vert \, \mathbf{e}_{i,j}] \right)\right)} {\sum_{k \in \mathcal{N}(i) \cup \{ i \}} \exp\left(\mathbf{a}^{\top}\mathrm{LeakyReLU}\left(\mathbf{\Theta} [\mathbf{x}_i \, \Vert \, \mathbf{x}_k \, \Vert \, \mathbf{e}_{i,k}] \right)\right)}. αi,j=kN(i){i}exp(aLeakyReLU(Θ[xixkei,k]))exp(aLeakyReLU(Θ[xixjei,j])).

geometric开源的代码:

由于标准GAT中的线性层在每个层之后立即应用,因此参与节点的排名不受查询节点的限制。相反,在GATv2中,每个节点都可以处理任何其他节点。

torch_geometric.nn — pytorch_geometric documentation (pytorch-geometric.readthedocs.io)

    def __init__(self,in_channels: Union[int, Tuple[int, int]],out_channels: int,heads: int = 1,concat: bool = True,negative_slope: float = 0.2,dropout: float = 0.0,add_self_loops: bool = True,edge_dim: Optional[int] = None,fill_value: Union[float, Tensor, str] = 'mean',bias: bool = True,share_weights: bool = False,**kwargs,):def forward(self, x: Union[Tensor, PairTensor], edge_index: Adj,edge_attr: OptTensor = None,return_attention_weights: bool = None):        

参考:

论文阅读和分析:Graph Attention Networks_KPer_Yang的博客-CSDN博客
https://github.com/tech-srl/how_attentive_are_gats
https://arxiv.org/abs/2105.14491
https://pytorch-geometric.readthedocs.io/en/latest/modules/nn.html#torch_geometric.nn.conv.GATv2Conv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58972.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读和分析:Graph Attention Networks

Graph Attention Networks 图注意力网络(GAT) 通过堆叠节点能够关注其邻域特征的层,能够(隐式地)为邻域中的不同节点指定不同的权重,而不需要任何类型的代价高昂的矩阵运算(例如矩阵转置&…

chatgpt赋能python:Python实现屏蔽多行的方法

Python 实现屏蔽多行的方法 作为一位有10年 Python 编程经验的工程师,我深知在实际开发过程中,屏蔽多行代码常常是必须的。在此,我将介绍几种 Python 屏蔽多行代码的方法,希望对读者有所帮助。 方法一:使用注释 在 …

chatgpt赋能python:Python圆柱体的体积计算代码

Python圆柱体的体积计算代码 作为一名具有10年Python编程经验的工程师,今天我来为大家分享Python圆柱体的体积计算代码。在这篇文章中,我将介绍如何使用Python编写一个简单的程序来计算圆柱体的体积,并解释一些关于圆柱体及如何计算其体积的…

让ChatGTP来为我们写一个计算任意位数圆周率的程序

最近在学习python,突然想编写一个计算圆周率pi的程序,可是对python库不是很熟悉,又不会手撸pi的计算函数所以就想起了ChatGPT,想让他来帮帮忙,顺便学习学习,废话不多说,看聊效! &am…

chatgpt赋能python:Python编程教程:如何计算小数点后1000位

Python编程教程:如何计算小数点后1000位 Python是一种高级编程语言,被广泛应用于数据科学、人工智能、Web开发等领域。今天我们来学习如何使用Python计算小数点后1000位。 为什么需要计算小数点后1000位? 在实际应用中,有时需要…

chatgpt赋能python:Python求面积计算的实现方法

Python求面积计算的实现方法 介绍 Python是一种高级编程语言,由于其简单易学,易于编写和调试,以及广泛的功能库,使其成为许多领域中的流行语言。 Python被广泛用于科学计算,数据分析,Web开发,…

chatgpt赋能python:Python计算圆柱体的表面积和体积

Python计算圆柱体的表面积和体积 Python是一种经典的动态编程语言,由于其易学易用,逐渐成为了众多程序员喜爱的语言之一。Python在科学计算领域也非常流行,因为其具有强大且易于使用的数学和统计函数库。在本文中,我们将介绍如何…

chatgpt赋能python:Python数学计算利器-Math库

Python数学计算利器 - Math库 Python作为一种高级编程语言,自然也包含了许多与数学计算相关的库。而其中最为常用的库之一便是Math库。 Math库主要用于执行基本的数学运算,如三角函数、指数函数、对数函数等等。使用Math库可以使Python编程更加方便和高…

chatgpt赋能python:Python计算圆柱侧面积的方法

Python计算圆柱侧面积的方法 圆柱是常见的几何体之一,其侧面积的计算是学习数学和物理时的重要部分。在计算侧面积时,Python是一种常用的编程语言之一,本文将向您介绍使用Python计算圆柱侧面积的方法。 圆柱侧面积的定义 圆柱侧面积是指圆…

chatgpt赋能python:Python如何计算圆的面积和体积

Python如何计算圆的面积和体积 在工程和科学领域中,经常需要计算圆形物体的面积和体积。Python是一种流行的编程语言,可以使用它来编写计算圆形物体面积和体积的程序。接下来,让我们深入探讨如何使用Python计算圆形物体的面积和体积。 圆形…

chatgpt赋能python:Python计算圆的面积方法

Python计算圆的面积方法 作为一门非常受欢迎的编程语言,Python已经被广泛应用于各个领域。在数学计算方面,通过Python可以快速准确地计算一系列的数学问题,比如计算圆的面积。本文将介绍Python计算圆面积的方法。 什么是圆的面积&#xff1…

chatgpt赋能python:Python计算圆面积方法教程

Python计算圆面积方法教程 你是否想过如何用Python计算圆面积?圆形是一个基本的几何形状,计算圆的面积是一个必要的技能。Python作为一种流行的编程语言,可以帮助我们更轻松地计算圆的面积。本教程将介绍如何使用Python计算圆的面积。 什么…

chatgpt赋能python:Python计算球体表面积和体积

Python计算球体表面积和体积 如果您需要计算球体的表面积和体积,那么Python可以成为您的助手。Python在科学计算领域中越来越受欢迎,因为它是一个灵活且易于使用的语言。Python拥有大量的科学计算库,其中一些专用于计算几何体的表面积和体积…

chatgpt赋能python:如何用Python计算球的表面积和体积

如何用Python计算球的表面积和体积 球体是数学中的常见图形,计算球的表面积和体积是科学研究和应用中的重要问题。Python作为一种高效、易学、广泛使用的编程语言,可以很方便地用于计算球的表面积和体积。 本篇文章将会介绍如何用Python计算球的表面积…

chatgpt赋能python:用Python计算圆柱体面积和体积

用Python计算圆柱体面积和体积 如果你正在寻找一种简单而有效的方法来计算圆柱体的面积和体积,那么Python编程语言可以成为你的得力助手。Python是一种简单易用且功能强大的编程语言,非常适合用于处理数学问题。 什么是圆柱体? 圆柱体是一…

chatgpt赋能python:Python计算圆的周长

Python计算圆的周长 Python是一种简单易学的编程语言,被广泛应用于各种领域,包括科学、数据分析、网站开发等等。在本文中,我们将介绍如何使用Python计算圆的周长。 什么是圆的周长 圆的周长是指圆周的长度,也就是圆内任意两点…

chatgpt赋能python:Python计算圆的半径

Python计算圆的半径 Python是一种流行的编程语言,其语法简单易懂,使其成为了很多编程初学者的选择。在编程中,计算圆的半径是一项非常基本的任务,本文将重点介绍使用Python计算圆的半径的方法。 圆的半径是什么? 在…

chatgpt赋能python:用Python计算pi的方法及其优势

用Python计算pi的方法及其优势 Python是一款易学易用且功能强大的编程语言。其广泛的应用范围涵盖数据科学、网络编程、后端开发等多个领域。其中,Python还可以被用来计算数学常数,比如圆周率pi。本文将介绍Python计算pi的方法及其优势。 Python计算pi…

chatgpt赋能python:Python计算圆柱体体积

Python计算圆柱体体积 圆柱体是一种常见的几何体,其体积的计算十分重要。Python作为一种高效便捷的编程语言,可以很好地完成圆柱体体积的计算。 什么是圆柱体 圆柱体是由两个平行圆面和它们之间的曲面组成的几何体。其中,底面圆面的半径称…

chatgpt赋能python:Python计算圆的周长详解

Python计算圆的周长详解 如果您正在学习Python编程,那么计算圆的周长是您必不可少的工具之一。但是,如果您对Python圆的周长不熟悉,那么您可能会遇到一些困惑和挫折。本文将为您详细介绍如何使用Python计算圆的周长,让您的学习之…