
图片白丝 porn白丝 porn
学习接洽图神经相聚的通盘学问,包括 GNN 是什么,不同类型的图神经相聚,以及它们的用途。此外,了解怎样使用 PyTorch 构建图神经相聚。 目次什么是图?使用 NetworkX 创建图 为什么分析图很难? 什么是图神经相聚(GNN)? 什么是图卷积相聚(GCN)? 图神经相聚怎样责任?使用 PyTorch 构建图神经相聚 GNN
图片
1. 什么是图?
图是一种包含节点和边的数据结构。一个节点可以是一个东说念主、场地或物体,范围说了节点之间的关系。边可以是有向的,也可以是无向的,基于标的性依赖关系。
不才面的示例中,蓝色圆圈是节点,箭头是边。边的标的界说了两个节点之间的依赖关系。
图片
让咱们了解一下复杂的图数据集:爵士音乐家相聚。它包含198个节点和2742条边。
爵士音乐家相聚https://datarepository.wolframcloud.com/resources/Jazz-Musicians-Network
不才面的社区图中,不齐心情的节点代表爵士音乐家的各式社区,边市欢着它们。存在一种配合相聚,其中单个音乐家在社区表里齐接洽系。
图片
爵士音乐家相聚的社区图
图在处理具接洽系和相互作用的复杂问题方面尽头出色。它们在方法识别、酬酢相聚分析、推选系统和语义分析中得到哄骗。创建基于图的管制有缱绻是一个全新的领域,为复杂且相互关联的数据集提供了丰富的视力。
2. 使用 NetworkX 创建图
在本节中,咱们将学习使用NetworkX创建图。
底下的代码受到 Daniel Holmberg 在 Python 中的图神经相聚博客的影响。
创建 networkx 的DiGraph对象“H”
添加包含不同标签、心情和大小的节点
添加边以创建两个节点之间的关系。举例,“(0,1)”暗示 0 对 1 有标的性依赖。咱们将通过添加“(1,0)”来创建双向关系
以列表阵势索求心情和大小
使用 networkx 的draw函数绘制图
import networkx as nx
H = nx.DiGraph()
#adding nodes
H.add_nodes_from([
(0, {'color': 'blue', 'size': 250}),
(1, {'color': 'yellow', 'size': 400}),
(2, {'color': 'orange', 'size': 150}),
(3, {'color': 'red', 'size': 600})
])
#adding edges
H.add_edges_from([
(0, 1),
(1, 2),
(1, 0),
(1, 3),
(2, 3),
(3,0)
])
node_colors = nx.get_node_attributes(H, 'color').values()
colors = list(node_colors)
node_sizes = nx.get_node_attributes(H, 'size').values()
sizes = list(node_sizes)
# Plotting Graph
nx.draw(H, with_labels=True, node_color=colors, node_size=sizes)
图片
不才一步中,咱们将使用to_undirected()函数将数据结构从有向图调换为无向图。# 调换为无向图
G = H.to_undirected()
nx.draw(G, with_labels=True, node_color=colors, node_size=sizes)
3. 为什么分析图很难?
基于图的数据结构存在一些污点,数据科学家在斥地基于图的管制有缱绻之前必须了解这些污点。
图存在于非欧几里得空间中。它不在 2D 或 3D 空间中存在,这使得证实数据变得愈加费事。为了在 2D 空间中可视化结构,您必须使用各式降维用具。
图是动态的;它们莫得固定的阵势。可以存在两个在视觉上不同的图,但它们可能具有不异的相连矩阵暗示。这使得使用传统的统计用具来分析数据变得费事。
对于东说念主类解读来说,图的鸿沟和维度会增多图的复杂性。具有多个节点和数千条边的密靠拢构更难清爽和索求瞻念察。
4. 什么是图神经相聚(GNN)?
图神经相聚是一种极度类型的神经相聚,或者处理图数据结构。它们受到卷积神经相聚(CNNs)和图镶嵌的很大影响。GNNs 用于展望节点、边和基于图的任务。
CNNs 用于图像分类。近似地,GNNs 哄骗于图结构(像素网格)以展望一个类。
轮回神经相聚用于文分内类。近似地,GNNs 哄骗于图结构,其中每个单词是句子中的一个节点。
GNNs 是在卷积神经相聚由于图的任性大小和复杂结构而无法取得最好着力时引入的。
图片
图像由 Purvanshi Mehta 提供
输入图历程一系列神经相聚。输入图结构被调换成图镶嵌,允许咱们保留对于节点、边和全局凹凸文的信息。
然后,节点 A 和 C 的特征向量通过神经相聚层。它团聚这些特征并将它们传递到下一层。
4.1 图神经相聚的类型
有几种类型的神经相聚,它们大无数齐有一些卷积神经相聚的变体。在本节中,咱们将学习最流行的 GNNs。
图卷积相聚(GCNs, Graph Convolutional Networks)近似于传统的 CNNs。它通过查验相邻节点来学习特征。GNNs 团聚节点向量,将着力传递给宽广层,并使用激活函数哄骗非线性。简而言之,它包括图卷积、线性层和非学习激活函数。有两种主要类型的 GCNs:空间卷积相聚和频谱卷积相聚。
图自编码器相聚(Graph Auto-Encoder Networks)使用编码器学习图暗示,并尝试使用解码器重建输入图。编码器息争码器通过瓶颈层市欢。它们频繁用于链路展望,因为自编码器擅所长理类均衡问题。
轮回图神经相聚(RGNNs, Recurrent Graph Neural Networks)学习最好扩散方法,它们可以处理单个节点具有多个关系的多关系图。这种类型的图神经相聚使用正则化器来增强平滑性比肩除过度参数化。RGNNs 使用更少的忖度才略产生更好的着力。它们用于生成文本、机器翻译、语音识别、生成图像面目、视频象征和文本摘录。
门控图神经相聚(GGNNs, Gated Graph Neural Networks)在推论具有永久依赖性的任务方面优于 RGNNs。门控图神经相聚通过在永久依赖性上添加节点、边和时分门来改换轮回图神经相聚。近似于门控轮回单位(GRUs),门用于在不同现象下记着和健忘信息。
4.2 图神经相聚任务类型
底下,咱们列举了一些图神经相聚任务类型,并提供了示例:
图分类(Graph Classification:):用于将图分类为不同的类别。其哄骗包括酬酢相聚分析和文分内类。
节点分类(Node Classification:):这个任务使用相邻节点的标签来展望图中缺失的节点标签。
链路展望(Link Prediction):展望图中具有不完满相连矩阵的一双节点之间的长入。这频繁用于酬酢相聚。
社区检测(Community Detection):基于边的结构将节点辩认为不同的群集。它近似地从边的权重、距离和图对象中学习。
图镶嵌(Graph Embedding):将图映射到向量,保留接洽节点、边和结构的相关信息。
图生成(Graph Generation:):从样本图散播中学习,以生成一个新的但不异的图结构。
图片
图神经相聚类型
4.3 图神经相聚的污点
使用 GNNs 存在一些污点。了解这些污点将匡助咱们笃定何时使用 GNN 以及怎样优化咱们的机器学习模子的性能。
大无数神经相聚可以深度学习以获取更好的性能,而 GNNs 大多是浅层相聚,主要有三层。这收尾了咱们在大型数据集上获取开端进性能的才略。
图结构旁边变化,这使得在其上实践模子变得愈加费事。
将模子部署到分娩环境靠近可推广性问题,因为这些相聚在忖度上很腾贵。淌若您有一个庞大且复杂的图结构,将难以在分娩环境中推广 GNNs。
5. 什么是图卷积相聚(GCN)?
大无数 GNNs 齐是图卷积相聚,了解它们在参预节点分类教程之前很进击。
GCN 中的卷积与卷积神经采集结的卷积调换。它将神经元与权重(滤波器)相乘,以从数据特征中学习。
它在通盘图像上充任滑动窗口,以从相邻单位中学习特征。该滤波器使用权重分享在图像识别系统中学习各式面部特征。
当今将调换的功能滚动到图卷积采集结,其中模子从相邻节点中学习特征。GCN 和 CNN 之间的主要区别在于,GCN 被设想为在非欧几里得数据结构上责任,其中节点和边的轨范可能变化。
图片
CNN vs GCN
有两种类型的 GCNs:
空间图卷积相聚(Spatial Graph Convolutional Networks)使用空间特征从位于空间空间的图中学习。
频谱图卷积相聚(Spectral Graph Convolutional Networks)使用图拉普拉斯矩阵的特征值剖析进行节点间的信息传播。这些相聚灵感来自信号与系统中的波动传播。
6. 图神经相聚怎样责任?使用 PyTorch 构建图神经相聚
咱们将构建和实践用于节点分类模子的谱图卷积。代码源可在文末获取,让您体验并运转您的第一个基于图的机器学习模子。
6.1 准备
咱们将安设 Pytorch软件包,因为 pytorch_geometric是在其基础上构建的。
!pip install -q torch
然后,咱们将使用 torch 版块安设 torch-scatter 和 torch-sparse。之后,咱们将从 GitHub 安设 pytorch_geometric 的最新版块。%