当前位置:首页 >> 编程语言 >> 【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补),蓝魔w7

【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补),蓝魔w7

0evadmin 编程语言 1
文件名:【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补),蓝魔w7 【Pytorch神经网络理论篇】 28 DGLGraph图的基本操作(缺一部分 明天补) 同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习·理论篇(2023版)目录地址为:

CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!https://v9999.blog.csdn.net/article/details/127587345欢迎大家订阅(2023版)理论篇

以下为2021版原文~~~~

 

1 DGLGraph图的创建与维护 1.1 生成DGLGraph图并且增加顶点与边 import dglimport torch as th# 边 0->1, 0->2, 0->3, 1->3u, v = th.tensor([0, 0, 0, 1]), th.tensor([1, 2, 3, 3])g = dgl.graph((u, v))print(g) # 图中节点的数量是DGL通过给定的图的边列表中最大的点ID推断所得出的# 获取节点的IDprint(g.nodes())# 获取边的对应端点print(g.edges())# 获取边的对应端点和边IDprint(g.edges(form='all'))# 如果具有最大ID的节点没有边,在创建图的时候,用户需要明确地指明节点的数量。g = dgl.graph((u, v), num_nodes=8)

1.2 获得DGLGraph图的顶点与边 import dglimport networkx as nximport matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符mpl.rcParams['font.family'] = 'STSong'mpl.rcParams['font.size'] = 40g_dgl = dgl.DGLGraph() # 生成一个空图g_dgl.add_nodes(4) # 增加四个顶点g_dgl.add_edges(list(range(4)),[0]*4) # 增加四条边print("顶点",g_dgl.nodes()) # 输出顶点列表print("边:",g_dgl.edges()) # 输出边print("边索引",g_dgl.edge_id(1,0)) # 输出边索引print("边属性",g_dgl.edges[g_dgl.edge_id(1,0)]) # 输出边属性

顶点 tensor([0, 1, 2, 3]) 边: (tensor([0, 1, 2, 3]), tensor([0, 0, 0, 0])) 边索引 1 边属性 EdgeSpace(data={})

1.3 删除DGLGraph图的顶点与边 g_dgl.remove_edges(i) # 删除索引值为i的边print(g_dgl.number_of_edges()) # 输出图的边数 1.4 清空DGLGraph图 g_dgl.clear() # 清空图内容 2 查看DGLGraph图中的度

DGLGraph图按照边的方向将度分为两种:连接其他顶点的度(out)和被其他顶点连接的度。

in_degree:查询指定顶点被连接的边数。in_degrees:查询多个顶点被连接的边数,默认查询图中的全部顶点。out_degree:查询指定顶点连接其他顶点的边数。out_degrees:查询多个顶点连接其他顶点的边数,默认查询图中的全部顶点。2.1 代码实战:查看DGLGraph图中的度 import dglimport networkx as nximport matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符mpl.rcParams['font.family'] = 'STSong'mpl.rcParams['font.size'] = 40g_dgl = dgl.DGLGraph() # 生成一个空图g_dgl.add_nodes(4) # 增加四个顶点g_dgl.add_edges(list(range(4)),[0]*4) # 增加四条边print(g_dgl.in_degree(0)) # 查询连接0顶点的度,输出:4print(g_dgl.in_degrees([0,1])) # 查询连接0,1顶点的度,输出:tensor([4, 0])print(g_dgl.in_degrees()) # 查询全部顶点被连接的度,输出:tensor([4, 0, 0, 0])print(g_dgl.out_degrees()) # 查询全部顶点向外连接的度,输出:tensor([1, 1, 1, 1])

3 DGLGraph图与NetWorkx图的相互转化

DGLGraph类在NetWorkx模块之上进行扩展

3.1 将DGLGraph图转成NetWorkx图并显示

将DGLGraph图转成NetWorkx图后便可以借助NetWorkx图的显示功能来可视化其内部结构。

import dglimport networkx as nximport matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符mpl.rcParams['font.family'] = 'STSong'mpl.rcParams['font.size'] = 40import osos.environ['KMP_DUPLICATE_LIB_OK'] = 'True'g_dgl = dgl.DGLGraph() # 生成一个空图g_dgl.add_nodes(4) # 增加四个顶点g_dgl.add_edges(list(range(4)),[0]*4) # 增加四条边nx.draw(g_dgl.to_networkx(),with_labels=True) # 先调用to_networkx()方法,将DGLGraph图转成NetWorkx图,再调用NeWorkx的draw()方法进行显示。#### Networkx库中对图的可视化没有自环图的功能 3.2 利用NetWorkx图创建DGLGraph图

DGLGraph图可以从NetWorkx图中转化而来。

3.2.1 代码实战:利用NetWorkx图创建DGLGraph图

先调用dgl.DGLGraph()将NetWorkx图转化为DGLGraph图,再调用了DGLGraph图对象的to_networkx()方法,将DGLGraph图转换为NetWorkx图显示。

import dglimport networkx as nximport matplotlib.pyplot as pltimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符mpl.rcParams['font.family'] = 'STSong'mpl.rcParams['font.size'] = 40import osos.environ['KMP_DUPLICATE_LIB_OK'] = 'True'g_nx = nx.petersen_graph() # 创建一个Networkx类型的无向图peterseng_dgl = dgl.DGLGraph(g_nx) # 将Networkx类型转化为DGLGraphplt.figure(figsize=(20,6))plt.title("Networkx无向图",fontsize=20)nx.draw(g_nx,with_labels=True)plt.subplots(122)plt.title("DGL有向图",fontsize=20)nx.draw(g_dgl.to_networkx(),with_labels=True) # 将DGLGraph转化为Networkx类型的图

4 DGLGraph图中顶点属性的操作 4.1 为图添加节点特征和边特征

许多图数据包含节点和边上的属性,即节点特征和边特征。虽然节点特征和边特征的类型在现实世界中可以是任意的,但是DGLGraph只接受存储在张量(Tensor)中的属性,且该属性必须为数值类型。

4.2 修改顶点属性

4.3 删除顶点属性

DGL库官方操作指南https://docs.dgl.ai/

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接