iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python机器学习GCN图卷积神经网络原理解析
  • 236
分享到

python机器学习GCN图卷积神经网络原理解析

2024-04-02 19:04:59 236人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 图信号处理知识1.1 图的拉普拉斯矩阵1.1.1 拉普拉斯矩阵的定义及示例1.1.2 正则化拉普拉斯矩阵1.2 图上的傅里叶变换1.3 图信号滤波器2. 图卷积神经网络2.

1. 图信号处理知识

图卷积神经网络涉及到图信号处理的相关知识,也是由图信号处理领域的知识推导发展而来,了解图信号处理的知识是理解图卷积神经网络的基础。

1.1 图的拉普拉斯矩阵

拉普拉斯矩阵是体现图结构关联的一种重要矩阵,是图卷积神经网络的一个重要部分。

1.1.1 拉普拉斯矩阵的定义及示例

实例:

按照上述计算式子,可以得到拉普拉斯矩阵为:

1.1.2 正则化拉普拉斯矩阵

1.1.3 拉普拉斯矩阵的性质

1.2 图上的傅里叶变换

傅里叶变换是一种分析信号的方法,它可分析信号的成分,也可用这些成分合成信号。它将信号从时域转换到频域,从频域视角给出了信号处理的另一种解法。(1)对于图结构,可以定义图上的傅里叶变换(GFT),对于任意一个在图G上的信号x,其傅里叶变换表示为:

从线代角度,可以清晰的看出:v1,…, vn构成了N维特征空间中的一组完备基向量,G中任意一个图信号都可表示为这些基向量的线性加权求和,系数为图信号对应傅里叶基上的傅里叶系数。

回到之前提到的拉普拉斯矩阵刻画平滑度的总变差:

可以看成:刻画图平滑度的总变差是图中所有节点特征值的线性组合,权值为傅里叶系数的平方。总变差取最小值的条件是图信号与最小的特征值所对应的特征向量完全重合,结合其描述图信号整体平滑度的意义,可将特征值等价成频率:特征值越低,频率越低,对应的傅里叶基变化缓慢,即相近节点的信号值趋于一致。

把图信号所有的傅里叶系数结合称为频谱(spectrum),频域的视角从全局视角既考虑信号本身,也考虑到图的结构性质。

1.3 图信号滤波器

图滤波器(Graph Filter)为对图中的频率分量进行增强或衰减,图滤波算子核心为其频率响应矩阵,为滤波器带来不同的滤波效果。

故图滤波器根据滤波效果可分为低通,高通和带通。

低通滤波器:保留低频部分,关注信号的平滑部分;

高通滤波器:保留高频部分,关注信号的剧烈变化部分;

带通滤波器:保留特定频段部分;

而拉普拉斯矩阵多项式扩展可形成图滤波器H:

2. 图卷积神经网络

2.1 数学定义

图卷积运算的数学定义为:

上述公式存在一个较大问题:学习参数为N,这涉及到整个图的所有节点,对于大规模数据极易发生过拟合。

进一步的化简推导:将之前说到的拉普拉斯矩阵的多项式展开代替上述可训练参数矩阵。

此结构内容即定义为图卷积层(GCN layer),有图卷积层堆叠得到的网络模型即为图卷积网络GCN。

2.2 GCN的理解及时间复杂度

图卷积层是对频率响应矩阵的极大化简,将本要训练的图滤波器直接退化为重归一化拉普拉斯矩阵

2.3 GCN的优缺点

优点:GCN作为近年图神经网络的基础之作,对处理图数据非常有效,其对图结构的结构信息和节点的属性信息同时学习,共同得到最终的节点特征表示,考虑到了节点之间的结构关联性,这在图操作中是非常重要的。

缺点:过平滑问题(多层叠加之后,节点的表示向量趋向一致,节点难以区分),由于GCN具有一个低通滤波器的作用(j聚合特征时使得节点特征不断融合),多次迭代后特征会趋于相同。

3. Pytorch代码解析

GCN层的pytorch实现:

class GraphConvolutionLayer(nn.Module):
    '''
        图卷积层:Lsym*X*W
            其中 Lsym表示正则化图拉普拉斯矩阵, X为输入特征, W为权重矩阵, X'表示输出特征;
            *表示矩阵乘法
    '''
    def __init__(self, input_dim, output_dim, use_bias=True):
        #初始化, parameters: input_dim-->输入维度, output_dim-->输出维度, use_bias-->是否使用偏置项, boolean
        super(GraphConvolutionLayer,self).__init__()
        self.input_dim=input_dim
        self.output_dim=output_dim
        self.use_bias=use_bias #是否加入偏置, 默认为True
        self.weight=nn.Parameter(torch.Tensor(input_dim, output_dim))#权重矩阵为可训练参数
        if self.use_bias==True: #加入偏置
            self.bias=nn.Parameter(torch.Tensor(output_dim)) 
        else: #设置偏置为空
            self.reGISter_parameter('bias', None)
        self.reset_parameters()
    def reset_parameters(self):
        #初始化参数
        stdv = 1. / math.sqrt(self.weight.size(1))
        self.weight.data.unifORM_(-stdv, stdv)#使用均匀分布U(-stdv,stdv)初始化权重Tensor
        if self.bias is not None:
            self.bias.data.uniform_(-stdv, stdv)
    def forward(self, adj, input_feature):
        #前向传播, parameters: adj-->邻接矩阵(输入为正则化拉普拉斯矩阵), input_future-->输入特征矩阵
        temp=torch.mm(input_feature, self.weight)#矩阵乘法, 得到X*W
        output_feature=torch.sparse.mm(adj, temp)#由于邻接矩阵adj为稀疏矩阵, 采用稀疏矩阵乘法提高计算效率, 得到Lsym*temp=Lsym*X*W
        if self.use_bias==True: #若设置了偏置, 加入偏置项
            output_feature+=self.bias
        return output_feature

定义两层的GCN网络模型:

class GCN(nn.Module):
    '''
        定义两层GCN网络模型
    '''
    def __init__(self, input_dim, hidden_dim, output_dim):
        #初始化, parameters: input_dim-->输入维度, hidden_dim-->隐藏层维度, output_dim-->输出维度
        super.__init__(GCN, self).__init__()
        #定义两层图卷积层
        self.gcn1=GraphConvolutionLayer(input_dim, hidden_dim)
        self.gcn2=GraphConvolutionLayer(hidden_dim, output_dim)
    def forward(self, adj, feature):
        #前向传播, parameters: adj-->邻接矩阵, feature-->输入特征
        x=F.relu(self.gcn1(adj, feature))
        x=self.gcn2(adj, x)
        return F.log_softmax(x, dim=1)

以上就是GCN图卷积神经网络原理及代码解析的详细内容,更多关于GCN图卷积神经网络的资料请关注编程网其它相关文章!

--结束END--

本文标题: python机器学习GCN图卷积神经网络原理解析

本文链接: https://www.lsjlt.com/news/117871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python机器学习GCN图卷积神经网络原理解析
    目录1. 图信号处理知识1.1 图的拉普拉斯矩阵1.1.1 拉普拉斯矩阵的定义及示例1.1.2 正则化拉普拉斯矩阵1.2 图上的傅里叶变换1.3 图信号滤波器2. 图卷积神经网络2....
    99+
    2024-04-02
  • python机器学习GCN图卷积神经网络的原理是什么
    这篇文章主要介绍“python机器学习GCN图卷积神经网络的原理是什么”,在日常操作中,相信很多人在python机器学习GCN图卷积神经网络的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pytho...
    99+
    2023-06-30
  • Python深度学习pytorch卷积神经网络LeNet
    目录LeNet模型训练不变性 在本节中,我们将介绍LeNet,它是最早发布的卷积神经网络之一。这个模型是由AT&T贝尔实验室的研究院Yann LeCun在1989年提出的(并...
    99+
    2024-04-02
  • 图卷积神经网络(GCN)综述与实现(PyTorch版)
    图卷积神经网络(GCN)综述与实现(PyTorch版) 本文的实验环境为PyTorch = 1.11.0 + cu113,PyG = 2.0.4,相关依赖库和数据集的下载请见链接。 一、图卷积神经...
    99+
    2023-09-28
    pytorch cnn 深度学习 python
  • Python深度学习pytorch神经网络图像卷积运算详解
    目录互相关运算卷积层特征映射由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例。 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cros...
    99+
    2024-04-02
  • Python深度学习之实现卷积神经网络
    目录一、卷积神经网络二、网络架构三、卷积四、卷积层五、在Keras中构建卷积层六、池化层七、全连接层八、Python实现卷积神经网络九、总结一、卷积神经网络 Yann LeCun 和...
    99+
    2024-04-02
  • GCN-图卷积神经网络算法简单实现(含python代码)
    本文是就实现GCN算法模型进行的代码介绍,上一篇文章是GCN算法的原理和模型介绍。 代码中用到的Cora数据集: 链接:https://pan.baidu.com/s/1SbqIOtysKqHKZ7C50DM_eA  提取码:pfn...
    99+
    2023-09-01
    1024程序员节 python jupyter 卷积神经网络
  • 深度学习实验3 - 卷积神经网络
    文章目录 实验要求数据集定义1 手写二维卷积1.1 自定义卷积通道1.2 自定义卷积层1.3 添加卷积层导模块中1.4 定义超参数1.5 初始化模型、损失函数、优化器1.6 定义模型训练和测试...
    99+
    2023-09-02
    深度学习 cnn python
  • Python卷积神经网络图片分类框架详解分析
    【人工智能项目】卷积神经网络图片分类框架 本次硬核分享当时做图片分类的工作,主要是整理了一个图片分类的框架,如果想换模型,引入新模型,在config中修改即可。那么走起来瓷!!!...
    99+
    2024-04-02
  • Pytorch深度学习经典卷积神经网络resnet模块实例分析
    这篇文章主要介绍“Pytorch深度学习经典卷积神经网络resnet模块实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Pytorch深度学习经典卷积神经网络resnet模块实例分析”文章能帮...
    99+
    2023-06-30
  • Pytorch深度学习经典卷积神经网络resnet模块训练
    目录前言一、resnet二、resnet网络结构三、resnet181.导包2.残差模块2.通道数翻倍残差模块3.rensnet18模块4.数据测试5.损失函数,优化器6.加载数据集...
    99+
    2024-04-02
  • python机器学习之神经网络
    手写数字识别算法 import pandas as pd import numpy as np from sklearn.neural_network import MLPReg...
    99+
    2024-04-02
  • python机器学习实现神经网络示例解析
    目录单神经元引论参考多神经元单神经元引论 对于如花,大美,小明三个因素是如何影响小强这个因素的。 这里用到的是多元的线性回归,比较基础 from numpy import a...
    99+
    2024-04-02
  • 深度学习—卷积神经网络(CNN)全笔记,附代码
     本文内容为哔站学习笔记【卷积神经网络-CNN】深度学习(唐宇迪带你学AI):卷积神经网络理论详解与项目实战,计算机视觉,图像识别模块实战_哔哩哔哩_bilibili 目录 深度学习基础 什么是深度学习? 机器学习流程  特征工程的作...
    99+
    2023-10-23
    神经网络 深度学习 cnn python 图像处理
  • 卷积神经网络经典模型及其改进点学习汇总
    目录经典神经网络的改进点经典神经网络的结构汇总1、VGG162、ResNet503、InceptionV34、Xception5、MobileNet经典神经网络的改进点 名称改进点V...
    99+
    2024-04-02
  • Pytorch卷积神经网络迁移学习的目标及好处
    目录前言一、经典的卷积神经网络二、迁移学习的目标三、好处四、步骤五、代码前言 在深度学习训练的过程中,随着网络层数的提升,我们训练的次数,参数都会提高,训练时间相应就会增加,我们今天...
    99+
    2024-04-02
  • Python卷积神经网络图片分类框架的示例分析
    小编给大家分享一下Python卷积神经网络图片分类框架的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!整体结构config在config文件夹下的config.py中主要定义数据集的位置,训练轮数,batch_si...
    99+
    2023-06-25
  • tensorflow卷积神经Inception V3网络结构代码解析
    目录前言1 非Inception Module的普通卷积层2 三个Inception模块组3 Auxiliary Logits、全局平均池化、Softmax分类前言 学习了Incep...
    99+
    2024-04-02
  • Python深度学习神经网络基本原理
    目录神经网络梯度下降法神经网络 梯度下降法 在详细了解梯度下降的算法之前,我们先看看相关的一些概念。     1. 步长(Learning rate):步长决定了在梯度下降迭...
    99+
    2024-04-02
  • python机器学习之神经网络的示例分析
    这篇文章主要介绍了python机器学习之神经网络的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作