Task01:简单图论与环境配置与PyG库
近期参加了开源组织Datawhale的线上组队学习活动,因为之前有看过一些图神经的理论知识,之后的课题方向也想向图神经靠拢,所以打算跟着Datawhale再重新走一遍图神经。然后期间每个任务都会总结(估计会有很多不到位的地方拉~如果有人会看到,请多多包涵哦!)
Datawhale提供的课程链接:https://github.com/datawhalechina/team-learning-nlp/blob/master/GNN
一,简单图论
1.图的表示
图1.图的定义节点和边的信息可以是类别型的(categorical),类别型数据的取值只能是哪一类别。一般称类别型的信息为标签(label)。
节点和边的信息可以是数值型的(numeric),数值型数据的取值范围为实数。一般称数值型的信息为属性(attribute)。
图2.图的邻接矩阵(更正:有权图里面权重w属于[0,1],不是{0,1}) 图3.无向无权图及其邻接矩阵2.图的属性
2.1 结点的度
图4.结点的度2.2 邻接结点(neighbors)
图5.邻接节点2.3 行走(walk)
图6.行走 图7.定理2.4 路径(path)
路径是结点不可重复的行走。
2.5 子图(subgraph)
图8.子图2.6 连通分量(connected component)
图9.连通分量2.7 连通图(connected graph)
当一个图只包含一个连通分量,即其自身,那么该图是一个连通图。
2.8 最短路径(shortest path)
图10.最短路径2.9 直径(diameter)
图11.直径2.10 拉普拉斯矩阵
图12.拉普拉斯矩阵对称归一化的拉普拉斯矩阵如下所示:
图13.对称归一化的拉普拉斯矩阵3.图的基本类型
3.1 有向图和无向图
图14.有向图和无向图3.2 非加权图和加权图
图15.非加权图和加权图3.3 连通图和非连通图
图16.连通图和非连通图3.4 二部图
图17.二部图3.5 同质图和异质图
同质图(Homogeneous Graph):只有一种类型的节点和一种类型的边的图
异质图(Heterogeneous Graph):存在多种类型的节点和多种类型的边的图。
二,环境配置
1.使用nvidia-smi命令查看服务器上GPU情况
图18. 服务器上GPU情况2.安装正确版本的pytorch和cudatoolkit,此处安装1.8.1版本的pytorch和11.1版本的cudatoolkit
在vscode上新建虚拟环境gnn_env_lj,用来安装正确版本的pytorch和cudatoolkit。
新建虚拟环境:conda create -n gnn_env_lj python=3.8.5,创建新的虚拟环境gnn_env_lj,并在里面安装了python3.8.5,然后conda activate gnn_env_lj,激活虚拟环境,在该虚拟环境里面安装相应版本的pytorch和cudatoolkit。
使用教程提供的conda install pytorch torchvision torchaudio cudatoolkit=11.1 -c pytorch -c nvidia代码安装总是有几个包安装不上,如下图所示:
code1 code2把装不上的四个包用pip install安装,发现只有不加版本号的时候才能装上,好奇怪!
code3最后在pytorch官网上找到对应版本的pip安装pytorch代码:pip3 install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html,
pytorch官网网址:https://pytorch.org/
pytorch官网运行这段代码后可以成功安装pytorch:
code4然后确认是否正确安装,以下结果表示安装正确。
code53.安装正确版本的PyG
code6三.Data类——PyG中图的表示及其使用
1.PyG图数据的表示及其使用,即学习PyG中的Data类
code7 code8 code9 code102.PyG中图数据的表示及其使用,即学习PyG中Dataset类
PyG内置了大量常用的基准数据集,下面我们以PyG内置的Planetoid数据集为例,来学习PyG中图数据集的表示及使用
code11 code12展示一个简单的GCN模型构造和训练过程,没有用到Dataset和DataLoader,我们将使用一个简单的GCN层,并在Cora数据集上实验。
code13