提升网站打开速度怎么做,工信部网站备案号查询,南京哪些公司做网站,wordpress自动获取标签图神经网络概况1.GNN,GCN,GE的区别2.图卷积的通式--矩阵该如何作用2.1实现12.2实现22.3实现33.PyTorch geometric3.1 PyG内置数据集3.1.1ENZYMES dataset3.1.2Cora3.2 PyG自定义数据集3.2.1Data构建简单的图结构3.2.2 Dataset3.2.3 InMemoryDataset一文读懂图卷积GCN(https://z…
图神经网络概况1.GNN,GCN,GE的区别2.图卷积的通式--矩阵该如何作用2.1实现12.2实现22.3实现33.PyTorch geometric3.1 PyG内置数据集3.1.1ENZYMES dataset3.1.2Cora3.2 PyG自定义数据集3.2.1Data构建简单的图结构3.2.2 Dataset3.2.3 InMemoryDataset一文读懂图卷积GCN(https://zhuanlan.zhihu.com/p/89503068)读书笔记本文更强调的是空域卷积比较简单的介绍。1.GNN,GCN,GE的区别
Graph Embedding表示学习的范畴将图中节点/将整个图表示为低维、实值、稠密的向量。可以将用户表示成向量的形式再勇于节点分类任务图嵌入的方式有三种矩阵分解deepWalk, 图神经网络
Graph Neural Netvork神经网络在图上应用的模型统称。依据传播的方式不同可以分为图卷积神经网络图注意力网络图LSTM。(本质还是将网络结构技巧借鉴过来做新的尝试)。
Graph Convolutional Network采用卷积操作图神经网络是最经典的图神经网络。引发了无数的改进工作。
一句话概括三者的关系GCN是一类GNNGNN可以实现GE。
现实需求现实中像图像一样排列整齐的数据只占很小的一部分还有更大的一部分数据以图的形式存储社交网络的信息知识图谱蛋白质网络万维度网 提出疑问能够类似于图像领域的卷积操作一样具有一个通用的范式来抽取图像特征呢–图卷积(处理非结构化数据的利器)
2.图卷积的通式–矩阵该如何作用
图的表示: 图G(V,E)G(V,E)G(V,E)其中VVV为节点的集合EEE为边的集合。对于每个节点i均有特征向量xix_ixi可以用矩阵XN∗DX_{N*D}XN∗D表示。 图相关矩阵(Laplacian矩阵的定义是否有具体含义) 度矩阵D-对角阵对角线元素为各个结点的度无向图与该顶点相关联的边数有向图入度和出度 邻接矩阵A表示结点间关系无向图对称矩阵有边即为1有向图有向连接才为1。 Laplacian 矩阵LLD-A
图卷积核心思想每个节点受到邻居节点的影响通式 Hl1f(Hl,A)H^{l1}f(H^l,A)Hl1f(Hl,A)
其中H0XH^0XH0X为图的特征矩阵fff的差异定义了不同算法的差异。
2.1实现1
Hl1σ(AHlWl)H^{l1}\sigma(AH^lW^l)Hl1σ(AHlWl)
出发点结点特征与邻居结点的特征有关邻居结点各个维度特征的加权和。多层叠加后能够利用多层邻居的信息。
存在的问题没有考虑结点对自身的影响A没有被规范化时邻居结点多的结点拥有更大的影响力。
2.2实现2
Hl1σ(LHlWl)H^{l1} \sigma(LH^lW^l)Hl1σ(LHlWl) 使用Laplacian 矩阵Combinatorial Laplacian对角线未知非零解决了没有考虑自身结点信息自传递的问题。
2.3实现3
利用Symmetric normalized Laplacian同时解决两个问题自传递和归一化的问题。
归一化的Laplacian矩阵具有多种形式这些矩阵其实就是对应的图卷积核。 3.PyTorch geometric
PyTorch geometric–基于PyTorch的用于处理不规则数据图的库能够用于快速实现图等数据的表征学习的框架。 PyG-document
对机器学习库最关心的内容数据规范模型定义参数学习模型测试
3.1 PyG内置数据集
PyTorch Geometric 包含了很多常见的基本数据集例如Cora, Citeseer, Pubmed
3.1.1ENZYMES dataset
graph-level数据集载入demo–ENZYMES dataset, 包含6大类一共60个图能够用于graph-level的分类任务。
from torch_geometric.datasets import TUDataset
# graph_level demo
dataset TUDataset(root/tmp/ENZYMES, nameENZYMES) # 会下载不过很快就下载完了
print(数据集的大小(有多少张图), len(dataset))
print(图的类别数, dataset.num_classes)
print(图中结点的特征数, dataset.num_node_features)print(第i张图, dataset[2])
print(图为有向图否, dataset[2].is_undirected())输出
数据集的大小(有多少张图) 600
图的类别数 6
图中结点的特征数 3
第i张图 Data(edge_index[2, 92], x[25, 3], y[1])
图为有向图否 True3.1.2Cora
node-level 数据集载入demo–Cora依据科学论文之间相互引用关系而构建的Graph数据集一共包括2708篇论文共7类Genetic_AlgorithmsNeural_NetworksProbabilistic_MethodsReinforcement_LearningRule_LearningTheory
# node_level demofrom torch_geometric.datasets import Planetoiddataset2 Planetoid(root/tmp/Cora, nameCora) # 自动下载稍微有慢
# 直接上数据仓库中下载数据后放入/tmp/Cora/raw 文件夹着中
# cp ~/Downloads/planetoid-master/data/*cora* ./raw
# 处理完后会多一个processed 文件夹print(数据集的大小(有多少张图), len(dataset2))
print(图的类别数, dataset2.num_classes)
print(图中结点的特征数, dataset2.num_node_features)print(第i张图, dataset2[0])
print(图为有向图否, dataset2[0].is_undirected())print(训练结点数, dataset2[0].train_mask.sum().item())
print(测试结点数, dataset2[0].test_mask.sum().item())
print(验证结点数, dataset2[0].val_mask.sum().item())输出
数据集的大小(有多少张图) 1
图的类别数 7
图中结点的特征数 1433
第i张图 Data(edge_index[2, 10556], test_mask[2708], train_mask[2708], val_mask[2708], x[2708, 1433], y[2708])
图为有向图否 True
训练结点数 140
测试结点数 1000
验证结点数 5003.2 PyG自定义数据集
3.2.1Data构建简单的图结构
利用torch_geometric.data.Data()建模下图四个结点v0,v1,v2,v3v_0,v_1,v_2,v_3v0,v1,v2,v3每个结点带有特征向量[2,1],[5,6],[3,7],[12,0][2,1],[5,6],[3,7],[12,0][2,1],[5,6],[3,7],[12,0]并且每个结点的目标值/目标类别分别为:0,1,010,1,010,1,01 Data()的参数属性
Data(xNone, edge_indexNone, edge_attrNone, yNone, posNone, normalNone, faceNone, **kwargs)
# 参数
# x (Tensor, optional) – 结点的特征矩阵[num_nodes, num_node_features]. (default: None)
# edge_index (LongTensor, optional) – 结点的连接关系以COO格式存储 [2, num_edges]. 第一维度为源结点第二维为目标结点边可无序存储,可用于计算邻接矩阵。无向图会有2*num_nodes条边。
# y (Tensor, optional) – 图或者结点的目标向量可以为任意的尺寸. (default: None)
# edge_attr (Tensor, optional) – 边的特征矩阵 [num_edges, num_edge_features]. (default: None)
# pos (Tensor, optional) – Node position matrix with shape [num_nodes, num_dimensions]. (default: None)
# normal (Tensor, optional) – Normal vector matrix with shape [num_nodes, num_dimensions]. (default: None)
# face (LongTensor, optional) – Face adjacency matrix with shape [3, num_faces]. (default: None)建模代码demo:
import torch
from torch_geometric.data import Data
x torch.tensor([[2, 1], [5, 6], [3, 7], [12, 0]], dtypetorch.float) # 每个结点的特征向量
y torch.tensor([0, 1, 0, 1], dtypetorch.float) # 结点的目标值
edge_index torch.tensor([[0, 1, 2, 0, 3], [1, 0, 1, 3, 2]], dtypetorch.long)
data Data(xx, yy, edge_indexedge_index)
print(data)输出
Data(edge_index[2, 5], x[4, 2], y[4])
# 方括号中为各个矩阵的尺寸其中包括5条边4个维度为2的特征向量和4个标亮目标值。3.2.2 Dataset
Dataset适用于较大的数据集 torch_geometric.data.Dataset 3.2.3 InMemoryDataset
InMemoryDataset适用于RAM的数据 torch_geometric.data.InMemoryDataset # 继承自torch_geometric.data.Dataset 目前关注的还不是创建自己的数据集合回头再来
PyTorch geometric官方文档安装啦简单使用啦https://pytorch-geometric.readthedocs.io/en/latest/notes/introduction.html 使用参考博文1–图神经网络库PyTorch geometricPYG零基础上手教程https://zhuanlan.zhihu.com/p/91229616 使用参考博文2–图神经网络之神器——PyTorch Geometric 上手 实战https://zhuanlan.zhihu.com/p/94491664