热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

转g代码教程_图深度学习入门教程(九)——图滤波神经网络模型

本教程是一个系列免费教程,争取每月更新2到4篇。(由于精力有限,近期停止了一段时间,在此向大家道个歉)。主要是基于图深度学习的入门内容。讲

1d6eda618682d30d5706bd9c38d4bc16.png

本教程是一个系列免费教程,争取每月更新2到4篇。(由于精力有限,近期停止了一段时间,在此向大家道个歉)。

主要是基于图深度学习的入门内容。讲述最基本的基础知识,其中包括深度学习、数学、图神经网络等相关内容。该教程由代码医生工作室出版的全部书籍混编节选而成。偏重完整的知识体系和学习指南。在实践方面不会涉及太多基础内容 (实践和经验方面的内容,请参看原书)。

文章涉及使用到的框架以PyTorch和TensorFlow为主。默认读者已经掌握Python和TensorFlow基础。如有涉及到PyTorch的部分,会顺带介绍相关的入门使用。

本教程主要针对的人群:

  • 已经掌握TensorFlow基础应用,并想系统学习的学者。

  • PyTorch学习者

  • 正在从TensorFlow转型到PyTroch的学习者

  • 已经掌握Python,并开始学习人工智能的学者。

在上一篇的结尾出介绍了GfNN模型可以SGC网络可以弥补SGC模型无法拟合非线性数据的不足。本篇就来介绍下GfNN模型的结构、原理以及在DGL中的实现。

1 了解GfNN的网络结构

图滤波神经网络 (Graph filter Neural Network, GfNN)模型的主要思想就是在SGC模型后面加入深度学习中的非线性拟合功能。通过这种方式来弥补SGC网络无法拟合非线性数据的不足。

在掌握了SGC和深度神经网络的基础上,会很容易理解GfNN的结构。GfNN的结构只是在SGC后面加了1层全连接网络而已。如图10-17所示。

b4d9cdf870c817fda58d19b39c9290c2.png

从图中,可以看到GfNN和GCN具有相似的高性能。由于GfNN在学习阶段不需要邻接矩阵的乘法,因此它比GCN要快得多。此外,GfNN对噪声的容忍度也更高。

GfNN模型更像是一个框架。框架中包含了两部分:

(1)通过多跳的方式,将图信息融合到图解点特征中。

(2)用深度学习的方法,对融合后的图节点特征进行拟合。

基于这个框架,可以不仅仅限于图10-17中的全连接神经网络结构。在实际应用中,可以像普通的深度学习任务一样,根据数据的特征和任务的特点,选用适合的神经网络来搭建模型。

有关GfNN的更多详细信息可以参考论文(arXiv: 1905.09550,2019)

2 了解DGL库中GfNN的实现方式

在SGConv代码的基础稍加修改就可以实现一个带有全连接的GfNN模型。

2.1. DGL库中GfNN的代码实现

实现SGConv类的主要代码如下:

代码文件: dglGfNN.py(片段)

01 class GfNN(nn.Module):                #定义GfNN类
02    def __init__(self,in_feats, n_hidden, n_classes,03                 k, activation, dropout, cached=True,bias=False):
04        super(GfNN, self).__init__()
05        self.activation = activation    #激活函数
06        self.sgc = SGConv(in_feats, n_hidden, k,cached, bias)
07        self.fc = nn.Linear(n_hidden, n_classes)
08        self.dropout = nn.Dropout(p=dropout)
09    def forward(self, g,features):
10        x = self.activation(self.sgc(g,features))#对SGC结果进行非线性变换
11        x = self.dropout(x)
12        return self.fc(x)        #对变换后的特征进行全连接处理
13    
14 model = GfNN(feats_dim,n_hidden=512,n_classes=n_classes, #实例化GfNN模型
15                   k=2,activation= nn.PReLU(512) ,dropout = 0.2)

代码第14行演示了实例化GfNN模型的过程。一般使用激活函数PReLU效果会更好一些。

2.2. 技术细节:什么是PReLU激活函数

PReLU:是一个ReLU激活函数的变种,其数学公式如下。

6fa6b8f3274e793955e94f08aaac1832.png

其中, a是一个调节参数,该参数可以通过自学习得来。

在PyTorch中,PReLU的原形定义如下:

torch.nn.PReLU(num_parameters=1, init=0.25)

其中参数num_parameters代表可学习参数的个数,init代表可学习参数的初始值。

2.3. GfNN模型的思想

GfNN模型的思想会比模型本身的意义更大。该模型提供了一个非常好的思路,可以使非欧数据与深度学习技术更好的结合到一起。

3174c30b0f40584aa90eb3f6afe8d8b1.png

推荐阅读

图深度学习入门教程(一)——基础类型

图深度学习入门教程(二)——模型基础与实现框架
图深度学习入门教程(三)——全连接神经网络与图卷积

图深度学习入门教程(四)——训练模型的原理

图深度学习入门教程(五)——模型的优化器

图深度学习入门教程(六)——注意力机制与图注意力

图深度学习入门教程(七)——残差多层图注意力模型

图深度学习入门教程(八)——简化图卷积模型

思考:用图神经中的空间域解密谱域中的拉普拉斯

思考sobel算子的原理

思考BN算法与激活函数的前后位置

8164f7225dca72fff87d1f59ba814cfb.gif


推荐阅读
  • DNNBrain:北师大团队出品,国内首款用于映射深层神经网络到大脑的统一工具箱...
    导读深度神经网络(DNN)通过端到端的深度学习策略在许多具有挑战性的任务上达到了人类水平的性能。深度学习产生了具有多层抽象层次的数据表示;然而,它没有明确地提供任何关 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • AI 学习路线:从Python开始机器学习
    AI 学习路线:从Python开始机器学习 ... [详细]
  • 保姆级使用PyTorch训练与评估自己的HorNet网络教程
    文章目录前言0.环境搭建&快速开始1.数据集制作1.1标签文件制作1.2数据集划分1.3数据集信息文件制作2.修改参数文件3.训练4.评估5.其他教程前言项目地址: ... [详细]
  • PyTorch 2.0来了!100%向后兼容,一行代码将训练提速76%!
    点击下方卡片,关注“CVer”公众号AICV重磅干货,第一时间送达点击进入—CV微信技术交流群转载自:机器之心PyTorch官方 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 安装Tensorflow-GPU文档第一步:通过Anaconda安装python从这个链接https:www.anaconda.comdownload#window ... [详细]
author-avatar
南和东
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有