Cluster-GCN:超大图上的节点特征学习
Cluster-GCN:超大图上的节点特征学习
引言
基于图卷积设计的图神经网络在非结构化数据上表现优良,但仍然面临一些困难,如:
在超大图上进行图神经网络的训练时,全图的图卷积操作和full-batch的梯度下降方式,每个epoch中同时对所有节点更新embedding需要大量的内存空间(空间复杂度高);
基于图卷积操作的图神经网络结构,随着层数增加,计算成本指数增加(时间复杂度高),过多层的图神经网络模型还存在输出节点特征过平滑的特点;
full-batch算法收敛性较差。
现有应对方案
针对空间复杂度高的问题,有学者提出基于mini-batch的梯度下降方式减小模型的内存需求。
如GraphSAGE模型,该方法对节点周围k步的邻居进行采样,由于采样的邻居数小于full-batch,空间复杂度较小;然而由于需要更新节点embedding需要考虑邻居节点,随着GCN层数提升,计算量指数级增加,时间复杂度高。但该方法可以选取合适的batchsize,收敛性相对full-batch好一些;
而针对mini-batch中时间复杂度高的问题,有学者提出VR-GC ...
PyG-Sequential容器-设计序列图神经网络
PyG-Sequential容器-设计序列图神经网络
引言
之前我们介绍过由2层GATConv组成的神经网络,当我们需要定义一个复杂的序列图神经网络(上一层的输出将作为下一层的输入)时,可以使用torch.nn.Sequential容器将多个层连接起来。本文将先介绍torch.nn.Sequential容器,包括如何使用和相关的参数、标识;其次,将利用该容器设计一个基于GATConv的序列神经网络,并将模型用于节点分类这一下游任务。
torch.nn.Sequential容器
torch.nn.Sequential容器可用于定义顺序GNN 模型。 由于GNN运算符接受多个输入参数,torch_geometric.nn.Sequential 需要全局输入参数和单个运算符的函数头定义。 如果省略,中间模块将对其前一个模块的输出进行操作。
我们首先定义一个卷积层列表conv_list,用于存序列卷积层,其中上一卷积层的输出将作为下一卷积层的输入。加载各个卷积层。
GATConv初始化传入的参数'x, edge_index -> x' 为函数头,比如GATConv的输入形 ...
PyG-InMemoryDataset加载数据
PyG-InMemoryDataset加载数据
引言
我们这次重点关注第一部分,并提供2020年1月1日的twitter数据作为实验数据。首先分析继承InMemoryDataset类的Planetoid类,然后说明该类实例化流程,并详细说明如何继承该类设计自己的数据加载类,最后利用twitter数据写一个自己的数据加载类。
源码分析
我们以PyG中加载Planetoid数据集的源码为例进行分析,说明如何通过继承InMemoryDataset类来自定义一个数据可全部存储到内存的数据集类。
源码如下:
from typing import Optional, Callable, Listimport os.path as ospimport torchfrom torch_geometric.data import InMemoryDataset, download_urlfrom torch_geometric.io import read_planetoid_dataclass Planetoid(InMemoryDataset): url = 'htt ...
图神经网络的下游任务2-链路预测
图神经网络的下游任务2-链路预测
引言
前一篇博客介绍了如何利用图神经网络学习节点特征并进行节点分类任务。本文将介绍如何利用图神经网络进行链路预测这一下游任务。
看完以后应该可以回答以下几个问题:
链路预测是什么?
链路预测有什么应用?
如何利用图神经网络进行链路预测?
链路预测概述
本节引用部分主要摘自复杂网络链路预测的研究现状及展望。
链路预测定义
网络中的链路预测(Link Prediction)是指如何通过已知的网络节点以及网络结构等信息预测网络中尚未产生连边的两个节点之间产生链接的可能性。这种预测既包含了对未知链接(exist yet unknown links)的预测也包含了对未来链接(future links)的预测。
链路预测应用意义
链路预测在推荐系统、生化实验、数据分析等方面均有应用。
推荐系统
商品推荐:
在用户和商品的二部图中,如果用户购买商品,则用户和商品间存在链接,相似的用户可能同样会对该商品有需求,因此,预测用户和商品之间是否可能发生”购买“、”点击“等的链接,从而针对性地为用户推荐商品,可能可以提高商 ...
图神经网络的下游任务1-利用节点特征进行节点分类
图神经网络的下游任务1-利用节点特征进行节点分类
引言
之前提到(先挖个坑,后面补上更详细的关于图神经网络的特点、分类及应用的博客链接)图神经网络根据学习到不同的特征,可以进行不同的下游任务,如下表所示:
图神经网络输出的特征
下游任务
应用
节点特征
节点分类、节点聚类
词向量学习、商品/好友推荐、实体识别......
连边特征
链路预测
路况预测、商品推荐.......
图级别特征
图分类、图聚类
文本分类、新药物的发现、化合物筛选、蛋白质相互作用点检测......
本文就将介绍如何利用图神经网络学习节点特征并进行节点分类任务,看完后应该可以回答以下几个问题:
节点分类任务是什么?
节点分类的基本步骤?
有什么方法可以学习图中的节点特征?
如何利用图神经网络学习图中的节点特征?
如何利用图神经网络学习到的节点特征进行节点分类任务?
节点分类任务&步骤
节点分类定义
根据节点的属性(可以是类别型、也可以是数值型)、边的信息、边的属性(如果有的话)、已知的节点预测标 ...
hexo搭建博客出现的一些问题(持续更新......)
复杂博文显示渲染相关
渲染本地图片
解决方案参考链接
hexo引用本地图片无法显示_Ericam_-CSDN博客_hexo 图片
hexo中图片无法加载 - CodeNow99 - 博客园 (cnblogs.com)
Tips
我最后使用的是1+2结合的方法,md中的引用代码格式为:
![](post1/pic1.png)
此时需要注意路径和md文件的位置,相对于是设置了一个文件夹专门用来放博文中的图片,但是博文还是在外层文件目录下的,像这样:
md文件和图片文件夹目录示意
这个图片md代码为:
![md文件和图片文件夹目录示意](hexo搭建博客出现的一些问题(持续更新-)/md文件和图片文件夹目录示意.png)
[^]: 2022.10.22更新
最近图片又崩了,参考了这个链接解决: 在\themes\butterfly\layout\includes目录下有一个head.pug文件,修改该文件的meta信息,会使生成的所有页面都带有该head。在该文件中增加: meta(name="referrer" content= ...
消息传递图神经网络(Message Passing Neural Networks,MPNN)
消息传递图神经网络(Message Passing Neural Networks,MPNN)
一、引言
消息传递图神经网络(Message Passing Neural Networks,MPNN)实质上应该说是一种从具体的图神经网络模型中抽象出来的图神经网络框架(范式),其前向传播包括消息传递(message passing)和读出(readout)两个阶段。[论文原文:Neural Message Passing for Quantum Chemistry]
接下来将先整体介绍该框架并说明消息传递和读出两个阶段的区别;然后将详细介绍两个阶段的步骤,并对比基于该框架设计的实例模型中是如何设计消息传递和读出两个阶段的;最后提供一个代码改写框架方便利用该范式进行模型设计和编写代码。
看完后应该可以回答以下几个问题:
消息传递图神经网络完整的框架长什么样?
框架每个阶段和步骤在做什么?
基于该框架设计的模型在代码中应该如何实现?
二、消息传递图神经网络框架
消息传递图神经网络包括消息传递(message passing)和读出(readout)两个阶段。其中消息 ...
GNN环境配置和PyG库的使用
GNN环境配置和PyG库的使用
一、环境配置
1、确认安装的CUDA版本
nvcc --version
另外一个查看CUDA版本的命令为
nvidia-smi
但我之前安装过两个版本,用这个查出来的版本可能不是IDE中使用的真实版本(其实Windows的话也可以直接用控制面板看版本......)
2、安装正确版本的pytorch和cudatoolkit
参考连接win10+cuda10.2安装pytorch1.7.1(使用清华镜像源) - WoLi - 博客园 (cnblogs.com)
Previous PyTorch Versions | PyTorch
# CUDA 10.1conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch
命令行输入以下命令,确认是否正确安装:
pythonimport torchprint(torch.__version__)
3、安装正确版本的PyG
pip install torch-scat ...
github+hexo=我的博客&附搭建过程的小Tips
准备
安装nodejs,npm和git
前期准备安装教程
nodejs和npm: https://www.jianshu.com/p/13f45e24b1de
git: https://blog.csdn.net/eno_yang/article/details/114782695
github+hexo完整搭建教程
搭建参考教程
大佬写的太太太太详细了,不做重复功,一些我在搭建过程中出现的小问题放在后面供大家参考
https://www.cnblogs.com/liulangmao/p/4323064.html
更换主题
推荐几款简约风的主题:
Chic Theme
Volantis
Butterfly
Fluid
也可以参考知乎上的回答找喜欢的主题:
有哪些好看的 Hexo 主题? - 知乎
另外一种方法就是,主题的网址往往会有一些优秀示例,可以找到github链接去扒一扒喜欢博客的_config.yml配置,然后调整自己的博客。
颜色选取
RGB颜色值与十六进制颜色码转换工具 (sioe.cn)
编写博客
新建博客
hexo n ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
$ hexo new "My New Post"
More info: Writing
Run server
$ hexo server
More info: Server
Generate static files
$ hexo generate
More info: Generating
Deploy to remote sites
$ hexo deploy
More info: Deployment