信息产业部网站备案系统,兰州网站建设设计,wordpress 果壳网,wordpress 外链 图库GRAPH ATTENTION NETWORKS 代码详解 前言0.引言1. 环境配置2. 代码的运行2.1 报错处理2.2 运行结果展示 3.总结 前言
在前文中#xff0c;我们已经深入探讨了图卷积神经网络和图注意力网络的理论基础。还没看的同学点这里补习下。接下来#xff0c;将开启一个新的阶段#… GRAPH ATTENTION NETWORKS 代码详解 前言0.引言1. 环境配置2. 代码的运行2.1 报错处理2.2 运行结果展示 3.总结 前言
在前文中我们已经深入探讨了图卷积神经网络和图注意力网络的理论基础。还没看的同学点这里补习下。接下来将开启一个新的阶段我们将借助强大的深度学习框架PyTorch通过实战讲解来展示如何构建和训练一个GAT模型。这一过程不仅帮助读者巩固理论知识更重要的是它将引导读者从理论迈向实践实现在处理具有图结构数据的问题上的质的飞跃。
在本章节中我将主要介绍如何运行代码以获取计算结果。考虑到我的读者中有很多是初学者我认为在深入探讨代码的各种细节之前首先了解如何简单地运行模型并查看其结果是非常必要的。这不仅可以帮助读者迅速掌握操作还能使他们对模型的工作流程有一个直观的认识。 这个原文的代码地址感兴趣的读者自行下载即可 https://github.com/2578562306/pyGAT 当然要是觉得还不错的话烦请点赞收藏➕关注
0.引言
这是 Veličković 等人在 2017 年提出的图注意力网络GAT模型的 PyTorch 实现https://arxiv.org/abs/1710.10903。该代码库最初从 https://github.com/tkipf/pygcn 分叉而来。GAT 的官方仓库采用 TensorFlow 实现可以在 https://github.com/PetarV-/GAT 找到。目前网络上的主流讲解基本都是以这些版本的代码为基础因此我们将依据这些代码深入探索 GAT了解图神经网络中如何实现注意力机制的能力。
重要说明此外本 PyTorch 实现与原始的 TensorFlow 版本见此链接存在一些细微差异。当前的 PyTorch 版本主要旨在进行概念验证并非旨在完全复现原论文中报告的结果。因此复现出来的结果与原始论文中的结果存在一定的差距。在对当前代码进行讲解之后作者将分析这些差异并指导大家如何复原文中的实验结果。该实现使用的是 Cora 数据集其主要被分成了两个文件。具体细节将在下一章节的代码分析部分进行详细说明。
1. 环境配置
如果您已经配置好相关环境可以跳过本部分。
对于计划在特定环境下运行图注意力网络GAT的开发者而言了解并设置正确的系统要求是至关重要的初步步骤。以下详述了系统和软件环境的要求以确保GAT可以被正确安装并顺利运行。
必需的软件和库:
PyTorch: 需要安装的版本为0.4.1。PyTorch是执行深度学习模型的核心库尤其是在本实现中的图注意力网络GAT。Python: 支持的版本为3.5。Python是运行这一图注意力网络代码的基本环境。由于使用了torch.sparse_coo_tensor我们依赖特定版本的PyTorch和Python。
Python包依赖: 正确安装以下Python包是确保模型正常运行的前提条件。您可以通过运行下列命令来安装或检验这些依赖是否正确安装
这里你可以插入具体安装依赖的命令其中模型还是用到numpy和scipy的库可以通过使用pip安装:
pip install numpy
pip install scipy请确保所有的环境配置都符合要求以便无障碍地运行和应用图注意力网络。
使用 Python 开发环境中需要使用外部库如 numpy, torch, 和 scipy 等时可以通过 pip 命令来安装这些库。pip 是 Python 的官方包管理系统用于安装和管理软件包这些包通常来自于 Python 包索引(PyPI)它是一个集中存放 Python 程序包的仓库。
如何使用 pip 在命令行中安装软件包 打开命令行工具 在 Windows 上可以打开命令提示符或 PowerShell。在 macOS 或 Linux 上可以打开终端。 输入安装命令 在命令行中输入 pip install 包名 命令。例如要安装 Numpy就输入 pip install numpy。 执行命令 按回车键pip 将自动从 PyPI 下载并安装该软件包及其依赖。
安装多个包
如果要一次安装多个包可以在同一命令行中列出所有包用空格隔开。例如pip install numpy torch scipy。
此过程将在您的系统上安装指定的 Python 库允许您在任何 Python 脚本或项目中导入并使用这些库。
注意事项
确保您的网络连接畅通因为 pip 需要从互联网下载包。在某些情况下如果默认的 pip 安装的不是针对您当前使用的 Python 版本可能需要使用 pip3 替代 pip。根据您的系统设置可能需要管理员权限来安装包。在这种情况下您可能需要在命令前加上 sudo适用于 Linux 和 macOS例如 sudo pip install numpy。
通过以上步骤您可以轻松地通过 pip 在任何支持的开发环境中安装和管理 Python 包从而为开发工作提供必要的库支持。
大家很多同学都用 Jupyter Notebook 或 Visual Studio CodeVSCode进行 Python 开发时使用 pip 安装库同样是一个简单且有效的方式。以下是在这两种开发环境中安装 Python 库的详细步骤
在 Jupyter Notebook 中安装库 打开 Jupyter Notebook 通常通过在终端中输入命令 jupyter notebook 来启动 Jupyter Notebook。 创建或打开一个笔记本 在 Jupyter 的主界面可以选择“New”新建然后选择“Python X”X代表版本号来创建一个新的笔记本。 安装库 在笔记本的一个新单元中输入安装命令例如!pip install numpy执行单元格按 Shift Enter这条命令将会在你的 Python 环境中安装 NumPy 库。
在 Visual Studio CodeVSCode中安装库 打开或创建一个 Python 文件 在 VSCode 中打开你正在工作的项目或者新建一个 Python 文件。 打开终端 在 VSCode 中你可以通过点击顶部菜单的 “View”视图 “Terminal”终端来打开一个新的终端。或者使用快捷键 Ctrl 反引号打开或切换终端。 执行安装命令 在打开的终端中输入如下的命令来安装所需的库例如pip install numpy按 Enter 执行该命令将会为你的 Python 环境安装库。
在两种情况下你都可以通过类似的方式安装任何需要的库。只需将 numpy 替换为你需要安装的库的名称即可。确保你已经配置好了 Python 和 pip。 在 VSCode 或 Jupyter Notebook 中你可以通过这种方式方便地管理 Python 包以满足开发需求。这使得使用这些工具进行科学计算和开发成为一件高效且愉快的事情。
2. 代码的运行
在这里我仅仅展示如何修改代码保证模型的正确运行下面是代码的文件划分 文件名称还是很直接的模型使用的数据和上一节中GCN使用的一致在这里不讨论。output输出文件仅仅是用来存放可视化结果的这里要执行代码仅仅需要修改utils.py文件。 细心的同学一定会发现这个内容和GCN中的代码一样的确这个代码被作者重复用了。造轮子大家用确实很很爽的一件事。 这个地址修改成你自己存储数据的目录地址即可。如果你不知道地址在哪里怎么办 都是些很基础的操作同样在jupyter中打开数据的位置右键也会有复制地址的选项我在这里就不过的赘述了。然后点击train.py文件执行 文件即可。如果是说咱们的有些同学使用的是jupyter那么你还要将代码复制到一个ipynb文件中再执行文件。 2.1 报错处理
如果jupyter环境下运行的同学出现报错那么就多半是这里出现了问题 需要对代码修改如下 代码我放在这里便于大家直接复制
args parser.parse_args(args[]) 2.2 运行结果展示
其输出结果与GCN相似但值得注意的是每次运行的epoch数量都有所不同。这是因为模型采用了早停机制在训练过程中一旦满足特定条件即提前终止以防止过拟合。在下一节的代码详解中我将详细讲解早停机制的使用方法和它的工作原理。
这些数据展示了在训练图注意力网络GAT时的各个epoch训练周期的性能指标。下面是对这些数据的简单解释
Epoch: 这表示当前的训练周期编号从0001开始每个周期均包括向前和向后传播过程。loss_train: 这是训练集上的损失值反映了模型在训练数据上的表现。损失值越低表示模型在这组数据上的拟合越好。acc_train: 这是训练集上的准确率以百分比表示显示了模型正确分类训练数据的能力。loss_val: 这是验证集上的损失值用于评估模型在未见过的数据上的泛化能力。在实际应用中我们希望验证损失与训练损失相近这表明模型没有过拟合。acc_val: 这是验证集上的准确率反映了模型在验证数据上的分类准确性。较高的验证准确率表明模型具有较好的泛化性能。time: 这是完成该周期训练所需的时间以秒为单位。这个时间包括了数据处理、模型计算和反向传播等所有步骤的时间。
从这些数据中可以观察到随着训练周期的增加训练和验证的损失通常会逐渐减小而准确率则逐渐提高。这是模型学习过程的典型表现表示模型在逐渐适应和理解训练数据。然而重要的是要监控训练和验证损失之间的差异以及相应的准确率以便及时调整训练参数或提前停止训练防止过拟合。
下面的最终运行结果是我在CPU中实验得到的给各位一个运行的参考
至于这个准确率为和如何之高[可以参考我这个博文的理解。]。(https://blog.csdn.net/weixin_47332746/article/details/143515332)
3.总结
现阶段我们已经全面介绍了图注意力网络GAT的理论基础及模型的运行方式。在接下来的篇章中我们将深入探讨该模型及相关论文中的核心架构和代码实现。 这一部分将为对这一主题感兴趣的读者提供一个详细的技术视角帮助您从基本理论开始逐步了解模型是如何通过精确的数学建模和编程实现来完成预期的机器学习任务。深入解析模型的主体架构对于理解其工作原理至关重要对于那些希望在此基础上进行改进或希望自定义该模型以适应特定应用的研究者和开发者而言尤其具有价值。
如果您对这些内容感兴趣请不要忘记点赞、收藏并关注。这是对我的工作最大的支持和鼓励。非常感谢您如果有任何疑问欢迎随时与我联系。我期待与您的互动