【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 dgl
import torch as th# 边 0->1, 0->2, 0->3, 1->3
u, v = th.tensor([0, 0, 0, 1]), th.tensor([1, 2, 3, 3])
g = dgl.graph((u, v))print(g) # 图中节点的数量是DGL通过给定的图的边列表中最大的点ID推断所得出的
# 获取节点的ID
print(g.nodes())
# 获取边的对应端点
print(g.edges())
# 获取边的对应端点和边ID
print(g.edges(form='all'))
# 如果具有最大ID的节点没有边,在创建图的时候,用户需要明确地指明节点的数量。
g = dgl.graph((u, v), num_nodes=8)

1.2 获得DGLGraph图的顶点与边

import dgl
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符
mpl.rcParams['font.family'] = 'STSong'
mpl.rcParams['font.size'] = 40
g_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 dgl
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符
mpl.rcParams['font.family'] = 'STSong'
mpl.rcParams['font.size'] = 40
g_dgl = dgl.DGLGraph() # 生成一个空图
g_dgl.add_nodes(4) # 增加四个顶点
g_dgl.add_edges(list(range(4)),[0]*4) # 增加四条边
print(g_dgl.in_degree(0)) # 查询连接0顶点的度,输出:4
print(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 dgl
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符
mpl.rcParams['font.family'] = 'STSong'
mpl.rcParams['font.size'] = 40
import os
os.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 dgl
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 显示中文字符
mpl.rcParams['font.family'] = 'STSong'
mpl.rcParams['font.size'] = 40
import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'g_nx = nx.petersen_graph() # 创建一个Networkx类型的无向图petersen
g_dgl = dgl.DGLGraph(g_nx) # 将Networkx类型转化为DGLGraph
plt.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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pytorch神经网络理论篇】 29 图卷积模型的缺陷+弥补方案

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络实战案例】22 基于Cora数据集实现图注意力神经网络GAT的论文分类

注意力机制的特点是,它的输入向量长度可变,通过将注意力集中在最相关的部分来做出决定。注意力机制结合RNN或者CNN的方法。 1 实战描述 【主要目的:将注意力机制用在图神经网络中,完成图注意力神经网络的结构和搭建】 1.1 实现…

用OC和Swift一起说说二叉树

前言: 一:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二&#xf…

【Pytorch神经网络理论篇】 30 图片分类模型:Inception模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络理论篇】 31 图片分类模型:ResNet模型+DenseNet模型+EffcientNet模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

【Pytorch神经网络理论篇】 32 PNASNet模型:深层可分离卷积+组卷积+空洞卷积

1 PNASNet模型简介 PNASNet模型是Google公司的AutoML架构自动搜索所产生的模型,它使用渐进式网络架构搜索技术,并通过迭代自学习的方式,来寻找最优网络结构。即用机器来设计机器学习算法,使得它能够更好地服务于用户提供的数据。该…

s5k5e2ya MIPI 摄像头调试

1、驱动移植的话按照我之前的文章来做 驱动里面注意是几路的lane,一般mipi的话是差分信号,2路和4路是比较常见的。2、mipi波形 很明显上面的波形是不正确的。dp dn有一个都成了正弦波了。 首先,我们要找一下正确的波形 正确的波形应该是DP和DN不会同时…

【Pytorch神经网络实战案例】23 使用ImagNet的预训练模型识别图片内容

1 案例基本工具概述 1.1 数据集简介 Imagenet数据集共有1000个类别,表明该数据集上的预训练模型最多可以输出1000种不同的分类结果。 Imagenet数据集是目前深度学习图像领域应用得非常多的一个领域,关于图像分类、定位、检测等研究工作大多基于此数据…

杂谈转载

一、什么是运行时(Runtime)? 运行时是苹果提供的纯C语言的开发库(运行时是一种非常牛逼、开发中经常用到的底层技术)二、运行时的作用? 能获得某个类的所有成员变量能获得某个类的所有属性能获得某个类的所有方法交换…

【Pytorch神经网络实战案例】24 基于迁移学习识别多种鸟类(CUB-200数据集)

1 迁移学习 在实际开发中,常会使用迁移学习将预训练模型中的特征提取能力转移到自己的模型中。 1.1 迁移学习定义 迁移学习指将在一个任务上训练完成的模型进行简单的修改,再用另一个任务的数据继续训练,使之能够完成新的任务。 1.1.1 迁…

【Pytorch神经网络理论篇】 33 基于图片内容处理的机器视觉:目标检测+图片分割+非极大值抑制+Mask R-CNN模型

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

arduino i2c 如何写16位寄存器_树莓派3B开发Go语言(二)寄存器版本GPIO

作者:爪爪熊链接:https://www.jianshu.com/p/0495c0554a63來源:简书之前将go语言的运行环境给搭建起来了,但是没有开始真正的试试Go 语言操作树莓派硬件的效果。一、树莓派3B硬件介绍树莓派3B采用了博通的BCM2837方案,…

【Pytorch神经网络实战案例】25 (带数据增强)基于迁移学习识别多种鸟类(CUB-200数据集)

1 数据增强 在目前分类效果最好的EficientNet系列模型中,EfficientNet-B7版本的模型就是使用随机数据增强方法训练而成的。 RandAugment方法也是目前主流的数据增强方法,用RandAugment方法进行训练,会使模型的精度得到提升。 2 RandAugment…

diskgenius 数据迁移_U盘格式化后数据恢复免费方法教程

U盘里的数据一般都很重要,比如论文或者办公文件,而有时候我们会被病毒或者误操作把U盘给格式化了,这时候要怎么恢复U盘里的数据呢,只有一个办法,就是用U盘数据恢复软件,但网上此类软件虽然很多,…

【Pytorch神经网络理论篇】 34 样本均衡+分类模型常见损失函数

同学你好!本文章于2021年末编写,获得广泛的好评! 故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现, Pytorch深度学习理论篇(2023版)目录地址…

安卓 camera 调用流程_安卓如何做出微信那样的界面仿微信“我”的界面1/5

本系列目标通过安卓编程仿写微信“我”的界面,让大家也能做出类似微信界面.效果图如下:本文目标做出页面顶部的相机部分(其他部分在后续文章中逐步分享).效果图如下:实现方案通过截图工具或者下载一张照相机照片,放到工程的src/main/res/drawable目录下,命名为camera.png添加一…

【Pytorch神经网络实战案例】26 MaskR-CNN内置模型实现目标检测

1 Pytorch中的目标检测内置模型 在torchvision库下的modelsldetecton目录中,找到__int__.py文件。该文件中存放着可以导出的PyTorch内置的目标检测模型。 2 MaskR-CNN内置模型实现目标检测 2.1 代码逻辑简述 将COCO2017数据集上的预训练模型maskrcnm_resnet50_fp…

【Pytorch神经网络实战案例】27 MaskR-CNN内置模型实现语义分割

1 PyTorch中语义分割的内置模型 在torchvision库下的models\segmentation目录中,找到segmentation.Py文件。该文件中存放着PyTorch内置的语义分割模型。 2 MaskR-CNN内置模型实现语义分割 2.1 代码逻辑简述 将COCO 2017数据集上的预训练模型dceplabv3_resnet101…

怎么查看电脑内存和配置_电脑内存不足处理方法,电脑卡死处理方法。

超过10万人正在关注赶快来关注吧,这里有你想找的热点资讯,这里有你想要的各种资料,还有海量的资源,还在等什么。快来关注,大佬带你开车。电脑系统经常奔溃,软件经常运行不了,开不了机&#xff0…

前端开源项目周报0307

由OpenDigg 出品的前端开源项目周报第十一期来啦。我们的前端开源周报集合了OpenDigg一周来新收录的优质的前端开源项目,方便前端开发人员便捷的找到自己需要的项目工具等。 react-trend 简单优雅的光线 react-progressive-web-app 优化ProgressiveWeb应用开发 pull…