图神经网络导论与环境配置(pyG)

引言

在深度学习的输入数据形式当中,我们常见到的就是矩阵、张量(如计算机视觉中的像素点)还有序列(文字、语言等自然语言处理)。但在现实生活中的数据格式多种多样,我们很难将所有数据保存成“网格点”的 形式。图,作为一种储存数据的结构更容易将某些数据进行储存(如知识图谱,化学分子的结构,交通网络等等)。深度学习或者说神经网络在图上的应用,可以使我们挖掘更深层的知识,用于我们的目标任务。

然而图数据是非规则的非结构化的,它具有以下的特点:

  1. 任意的大小和复杂的拓扑结构;
  2. 没有固定的节点排序或参考点;
  3. 通常是动态的,并具有多模态的特征;
  4. 图的信息并非只蕴含在节点信息和边的信息中,图的信息还包括了图的拓扑结构。
    在这里插入图片描述

简单图论

重要知识 ----(图):

一个图被记为 G = V , E \mathcal{G}={\mathcal{V}, \mathcal{E}} G=V,E,其中
V {\mathcal{V}} V表示数量为N的节点的集合, E \mathcal{E} E表示数量为M条边的集合

节点和边的信息可以是类别型的(categorical),类别型数据的取值只能是哪一类别。一般称类别型的信息为标签(label)。
节点和边的信息可以是数值型的(numeric),数值型数据的取值范围为实数。一般称数值型的信息为属性(attribute)。
在图的计算任务中,我们认为,节点一定含有信息(至少含有节点的度的信息),边可能含有信息。

以化学分子为例:每一个原子可以看做是图上的一个节点,原子间相连的键看做为图上的边。那么节点的标签为我们的节点到底是哪一个原子,C原子还是H原子…边的标签也可以分为图的边是共价键还是离子键等等。同时原子(节点)也拥有属性,即C原子的分子量、带电荷数、化合价等信息,键(边)也可以拥有属性,即其长短,强度等等。
图片来自网络

重要知识二 ----(邻接矩阵):

给定一个图 G = V , E \mathcal{G}={\mathcal{V}, \mathcal{E}} G=V,E,其对应的邻接矩阵被记为 A ∈ 0 , 1 N × N \mathbf{A} \in{0,1}^{N \times N} A0,1N×N A i , j = 1 \mathbf{A}_{i, j}=1 Ai,j=1表示存在从节点 v i v_i vi v j v_j vj的边,反之表示不存在从节点 v i v_i vi v j v_j vj的边。形如:
在这里插入图片描述

邻接矩阵的行和列为其所有的节点,若两节点相邻为一不相邻为0,这是邻接矩阵的常用格式。但邻接矩阵可以被用户所定义在【0,1】之间,表达对该节点相邻的重要程度

重要知识三 ----(度矩阵与拉普拉斯矩阵)

D {D} D是度矩阵,可以理解为与节点相连的边的个数
D = d i a g ( d ( v 1 ) , ⋯   , d ( v N ) ) \mathbf{D=diag(d(v_1), \cdots, d(v_N))} D=diag(d(v1),,d(vN))
在这里插入图片描述
给定一个图 G = V , E \mathcal{G}={\mathcal{V}, \mathcal{E}} G=V,E,其邻接矩阵为 A A A,其拉普拉斯矩阵定义为 L = D − A \mathbf{L=D-A} L=DA

重要知识四 ----(图的种类)

同质图(Homogeneous Graph):只有一种类型的节点和一种类型的边的图。
同样以化学分子为例,表示一个完全连接的分子在一张图上,称为同质图。
异质图(Heterogeneous Graph):存在多种类型的节点和多种类型的边的图。
在一张图上表示多个化学分子(每个分子中原子节点类型不同即多种类型的节点),这些化学分子之间彼此又成键了,即多种类型的边。
二部图(Bipartite Graphs):节点分为两类,只有不同类的节点之间存在边。
(有机会再讨论,基本只讨论同质图和异质图)

图结构数据上的机器学习任务

在这里插入图片描述

配置环境(linux)

首先创建一个名为pyG的虚拟环境

$ conda create -n pyG python=3.7

激活该虚拟环境

$ source activate pgG

1、安装torch(推荐1.8.0以下,因为有对应的 wheel.

$ pip install torch===1.8.0

2、安装依赖包及torch-geometric

pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install torch-geometric

此处${TORCH}对应于你的torch版本 , ${CUDA}对应你CUDA版本
本人的cuda版本太低故装cpu版(版本号如何选择见wheel.)

pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-sparse -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-cluster -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-spline-conv -f https://pytorch-geometric.com/whl/torch-1.8.0+cpu.html
pip install torch-geometric

3、检查安装结果

(pgG) [zou@gpu22 makeNew]$ python
Python 3.7.10 (default, Jun  4 2021, 14:48:32) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import torch_geometric

不显示no Module 就没有问题了,有时候会显示warning说你的cuda版本太低,但由于装的是cpu版,不会有问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值