3 分析图形
分析图形基础处理分析图形的结构 G 可以使用各种图论函数进行分析,例如: 123456789G = nx.Graph()G.add_edges_from([(1, 2), (1, 3)])G.add_node("spam") # adds node "spam"list(nx.connected_components(G))[{1, 2, 3}, {'spam'}]sorted(d for n, d in G.degree())[0, 1, 1, 2]nx.clustering(G){1: 0, 2: 0, 3: 0, 'spam': 0} 一些具有大输出的函数迭代(节点、值)2元组。这些很容易存储在 dict 结构,如果你愿意的话。 123sp = dict(nx.all_pairs_shortest_path(G))sp[3]{3: [3], 1: [3, 1], 2: [3, 1, 2]} 图算法
4 绘制图形
图形绘制networkx主要不是一个图形绘制包,而是一个带有matplotlib的基本绘图,以及一个使用开源graphviz软件包的接口。这些是 networkx.drawing 模块,如果可能,将导入。 首先导入Matplotlib的绘图接口(Pylab也可以工作) 1import matplotlib.pyplot as plt 测试是否导入 networkx.drawing 抽签成功 G 使用其中之一 1234567G = nx.petersen_graph()plt.subplot(121)<matplotlib.axes._subplots.AxesSubplot object at ...>nx.draw(G, with_labels=True, font_weight='bold')plt.subplot(122)<matplotlib.axes._subplots.AxesSubplot object at ...>nx.draw_shell(G, nlist=[range(5, 10), range(5)], wit...
5 导入导出
读写图表邻接表邻接表networkx.readwrite.adjlist.read_adjlistnetworkx.readwrite.adjlist.write_adjlistnetworkx.readwrite.adjlist.parse_adjlistnetworkx.readwrite.adjlist.generate_adjlist多行邻接列表多行相邻列表networkx.readwrite.multiline_adjlist.read_multiline_adjlistnetworkx.readwrite.multiline_adjlist.write_multiline_adjlistnetworkx.readwrite.multiline_adjlist.parse_multiline_adjlistnetworkx.readwrite.multiline_adjlist.generate_multiline_adjlist边缘列表边缘列表networkx.readwrite.edgelist.read_edgelistnetworkx.readwrite.edg...
1 数据
1 图数据结构图说起来也很简单,就是两个核心点,一个是图节点(nodes/vertics),一个是边(edges/links)表示节点之间的连接关系 总体而言,图可以是不规整的(irregular),对比而言,平时我们看到的图片都是规整的(regular),可以表示成矩阵或者向量。问题在于设计数据结构如何储存图,一般有两种方案 矩阵表示又细分成两种 用邻接矩阵(adjacency matrix),度矩阵(degree matrix), 拉普拉斯矩阵(Laplacian matrix)去表示, 衍生出各种对拉普拉斯矩阵的操作,比如图傅里叶变换(graph fourier transform), 也有稀疏邻接矩阵 用关联矩阵(incidence matrix)表示,行表示节点,列表示边, 和这个相关的例如:超图(hypergraph) 这(两)种方式的缺点在于使用内存大, 矩阵维度和节点数目N挂钩。但是图的连接常常是稀疏的(sparse),也就是邻接矩阵中很多元素都是0(两个node没有连接关系),这些0元素会占据大量存储空间,使效率很低下。尤其是大型网络...
3 训练
1 图分类示例创建数据集1234567891011121314151617181920212223242526import torchfrom torch_geometric.datasets import TUDatasetdataset = TUDataset('/home/ykl/TUDataset', name = 'MUTAG')print()print(f'Dataset: {dataset}:')print('====================')print(f'Number of graphs: {len(dataset)}')print(f'Number of features: {dataset.num_features}')print(f'Number of classes: {dataset.num_classes}')data = ...
2 模型
消息传递网络1 原理Message Passing 是图网络中学习 node embedding 的重要方法。 公式$$\mathbf{x}_i^{(k)} = \gamma^{(k)} \left( \mathbf{x}i^{(k-1)}, \square{j \in \mathcal{N} (i)} , \phi^{(k)}\left(\mathbf{x}_i^{(k-1)}, \mathbf{x}j^{(k-1)},\mathbf{ e}{j,i}\right) \right),$$ x 表示表格节点的 embedding,e 表示边的特征,ϕ 表示 message 函数,□ 表示聚合 aggregation 函数,γ 表示 update 函数。上标表示层的 index,比如说,当 k = 1 时,x 则表示所有输入网络的图结构的数据。 函数 propagate(edge_index, size=None, **kwargs)这个函数最终会调用 message 和 update 函数。 message(**kwargs)这个函数定义了对于每个...
slrum作业调度
参考文献https://www.hpccube.com/doc/1.0.6/30000/general-handbook/scheduler/intro.html 介绍不要在登录节点上不通过作业调度管理系统直接运行作业(编译等日常 操作除外),以免影响其余用户的正常使用。 不通过作业调度管理系统直接在计算节点上运行将会被杀掉。 常用术语 user:用户名 node:计算节点 core:cpu核 job:作业 job step:作业步,单个作业可以有多个作业步 partition:分区,作业需在特定分区中运行 QOS:服务质量,可理解为用户可使用的CPU、内存等资源限制 tasks:任务数,默认一个任务使用一个cpu核,可理解为作业所需的cpu核数 socket:cpu插槽,可理解为物理cpu颗数 stdout:标准输出文件,程序运行正常时输出信息的文件,一般指输出到屏幕的信息 stderr:标准错误文件,程序运行出错时输出信息的文件,一般指输出到屏幕的信息 命令 sbatch:提交作业脚本。此脚本一般会包含一个或多个srun命令启动并行任务 sinfo:显示分区或节点状...
6 图分类任务
图分类任务 本次应用图神经网络存在两个主要的难点 构建图,函数调用图是节点名称和类型不一致的。如何构建一个合理的图很关键。需要对多余的节点进行拆分和组合。去掉冗余的边和路径。 readout,如何定义经过卷积处理的图网络的读出函数。让他能够体现整个图网络的信息,节点是不是得按照一定的顺序读取才行。 总结图网络的分类任务。
5 图神经网络的综述
图神经网络的综述主要是对图神经网络的综述,包括各种类型的图神经网络。 0 概述发展原因 计算资源的快速发展(如GPU) 大量训练数据的可用性 深度学习从欧氏空间数据中提取潜在特征的有效性 图嵌入和图神经网络的关系图神经网络的研究与图嵌入或网络嵌入密切相关,图嵌入或网络嵌入是数据挖掘和机器学习界日益关注的另一个课题。 图嵌入旨在通过保留图的网络拓扑结构和节点内容信息,将图中顶点表示为低维向量,以便使用简单的机器学习算法(例如,支持向量机分类)进行处理。许多图嵌入算法通常是无监督的算法,它们可以大致可以划分为三个类别,即矩阵分解、随机游走和深度学习方法。同时图嵌入的深度学习方法也属于图神经网络,包括基于图自动编码器的算法(如DNGR和SDNE)和无监督训练的图卷积神经网络(如GraphSage)。 1 根据神经网络的类型进行分类主要有以下六种: 图卷积网络(Graph Convolution Networks,GCN)、 图递归网络GRNN、 图注意力网络(Graph Attention Networks)、 图自编码器( Graph Autoencoders)、 图生成网络(...
2 GraphEmbedding
图嵌入0 引言概述在图上进行每一个节点的embedding,最终得到的结果是图上每一个节点的嵌入表示。这里主要通过无监督的方法实现embedding的过程。主要包括五种传统算法 Deepwalk LINE SDNE node2vec struct2vec 作用n维onehot向量表示图上的每一个节点。有多少个节点,就有多少onehot向量。如果节点的数量比较多,那么n的维度就会比较大。 代码https://github.com/shenweichen/GraphEmbedding 1 deepwalk 对每一个节点进行多次随机游走得到一系列语义信息。 w表示前后照顾的节点的数量、d表示嵌入后向量的维度、$\gamma$表示迭代的次数、t表示行走的步长 嵌入的维度为d=2的时候,就可以进行二维可视化了。如下所示,通过嵌入后的二维向量可是话,能够得到点的距离关系,相当于利用了图特征。 2 LINE 基于以下两个原理: 节点相互连接,并且相互连接的节点之间的权重很大,具有很高的相似性。 节点的邻居如果很相似的话,那么这两个节点即使不连接,那么他们也非常相似。 ...













