GCN的原理及其代码实现
图数据的特征性质
图像数据是一种特殊的图数据,图像数据是标准的2D网格结构图数据。图像数据的CNN卷积神经网络算法不能直接用在图数据上,原因是图数据具有以下特殊性。
- 节点分布不均匀:图像数据及网格数据诶个节点只有4个邻接点,因此可以定义均匀的卷积操作,但是图数据节点的度数可以任意变化,即邻节点不确定,因此无法直接卷积。
- 排列不变性:排列不变性(置换不变性)表示输入的顺序改变不会导致函数结果的变化(例如函数f(x, y, z) = x × y × z)。图数据具有排列不变性,即在空间中改变图中节点(对图进行折叠扭曲)的位置对最后的图关系没有影响,而图像数据只有变更了两个像素的位置整个图像的表达会发生变化,因此无法使用卷积,因为卷积的方式不符合排列不变性。
- 节点的额外属性:图数据的每个节点具有自身的属性,即每个节点都具有自身的特征向量,相比如图像数据中的三通道表达更加丰富。
- 边的额外属性:图中的节点可以拥有权重和类型,在图像网格数据中边没有任何属性或者权重,CNN卷积神经网络也没有而已处理边的机制。
GCN与CNN
- GCN要解决的是不规则的图结构数据的通用的特征提取方案,考虑节点自身的属性以及节点的邻接节点属性获得节点的特征向量,最终实现图节点分类,回归等任务。
- GCN和CNN一样都是对节点/像素的周边节点/像素进行加权求和套激活函数作为特征提取,经过多轮特征提取之后最后被一层套类似softmax函数实现分类。
2)度矩阵
度矩阵(用D表示)是由节点的度构成的矩阵,度矩阵是对角阵,对角线上记录了各节点的度值,即Dii为节点i的度值,在无向图的情况下节点的度值是相连的边的数量,如上图度矩阵如下:

3)矩阵的逆
设A是一个n阶矩阵,若存在另一个n阶矩阵B,使得: AB=BA=E ,E为单位阵,则称方阵A可逆,并称方阵B是A的逆矩阵。逆矩阵可以使用初等行变换求得,例如求上式的度矩阵,相当于每一行除以该节点的度。


图卷积:图卷积。要获得红节点的隐藏表示,图卷积操作的一个简单解决方案是取红节点及其邻居的节点特征的平均值。
与图像数据不同的是,节点的邻居是无序的,大小是可变的。如图列:

GNN与网络嵌入的主要区别在于GNN是一组对各种任务设计的神经网络模型,而网络嵌入则涵盖了针对同一任务的各种方法。因此,GNN可以通过图自动编码器来解决网络嵌入问题。
另一方面:网络嵌入中包含了矩阵分解,随机游走等其他非深度学习方法。
GCN的原理及其代码实现的更多相关文章
- 图机器学习(GML)&图神经网络(GNN)原理和代码实现(前置学习系列二)
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/4990947?contributionType=1 欢迎fork欢迎三连!文章篇幅有限, ...
- flume原理及代码实现
转载标明出处:http://www.cnblogs.com/adealjason/p/6240122.html 最近想玩一下流计算,先看了flume的实现原理及源码 源码可以去apache 官网下载 ...
- Java Base64加密、解密原理Java代码
Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是 ...
- Base64加密解密原理以及代码实现(VC++)
Base64加密解密原理以及代码实现 转自:http://blog.csdn.net/jacky_dai/article/details/4698461 1. Base64使用A--Z,a--z,0- ...
- AC-BM算法原理与代码实现(模式匹配)
AC-BM算法原理与代码实现(模式匹配) AC-BM算法将待匹配的字符串集合转换为一个类似于Aho-Corasick算法的树状有限状态自动机,但构建时不是基于字符串的后缀而是前缀.匹配 时,采取自后向 ...
- Java基础知识强化之集合框架笔记47:Set集合之TreeSet保证元素唯一性和比较器排序的原理及代码实现(比较器排序:Comparator)
1. 比较器排序(定制排序) 前面我们说到的TreeSet的自然排序是根据集合元素的大小,TreeSet将它们以升序排列. 但是如果需要实现定制排序,比如实现降序排序,则要通过比较器排序(定制排序)实 ...
- PHP网站安装程序的原理及代码
原文:PHP网站安装程序的原理及代码 原理: 其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安 ...
- 免费的Lucene 原理与代码分析完整版下载
Lucene是一个基于Java的高效的全文检索库.那么什么是全文检索,为什么需要全文检索?目前人们生活中出现的数据总的来说分为两类:结构化数据和非结构化数据.很容易理解,结构化数据是有固定格式和结构的 ...
- 机器学习之KNN原理与代码实现
KNN原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9670187.html 1. KNN原理 K ...
随机推荐
- 2511-Druid监控功能的深入使用与配置-如何记录监控数据(基于logback)
Druid的监控很强大,但可惜的是监控数据是存在内存中的,需求就是定时把监控数据记录下来,以日志文件的形式或者数据库入库. 记录两种方式: 数据库入库 logback形式记录 原理(重点) 如果仅仅想 ...
- YII的lazy loading
版本1 require('class\class1.php'); require('class\class1.php'); if($is_girl){ echo 'this is a girl'; $ ...
- C#中引用类型的变量做为参数在方法调用时加不加 ref 关键字的不同之处
一直以为对于引用类型做为参数在方法调用时加不加 ref 关键字是没有区别的.但是今天一调试踪了一下变量内存情况才发现大有不同. 直接上代码,结论是:以下代码是使用了 ref 关键字的版本.它输出1 ...
- Python 爬取途虎养车 全系车型 轮胎 保养 数据
Python 爬取途虎养车 全系车型 轮胎 保养 数据 2021.7.27 更新 增加标题.发布时间参数 demo文末自行下载,需要完整数据私聊我 2021.2.19 更新 增加大保养数据 2020. ...
- Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- SiteSucker Pro for Mac 专业的网站下载工具
SiteSucker Mac版是Mac os平台上的一款帮助用户下载数据的mac下载工具,SiteSucker绝对是一扒网站的利器,不仅仅是下载网站的HTML源文件,他连网站整体架构以及下面的所有文本 ...
- java方法---递归
java方法递归 1.什么是递归 就是自己调用自己: 2.递归结构的两个部分 递归头:什么时候不调用自身方法.如果仅有头,将陷入死循环.递归体:什么时候需要调用自身方法.
- 【Java】学习路径46-两种创建多线程的方法、以及在匿名内部类创建线程
两种方法: 1.创建一个继承自Thread的线程类,然后再main(不限)中构造这个线程类对象.方法在之前讲过. 2.创建一个使用Runnable接口的线程类,然后在main(不限)中构造这个Runn ...
- KingbaseESV8R6等待事件之lwlock buffer_content
前言 等待事件是排查数据库性能的指标之一.简单理解,cpu在处理业务时由于业务逻辑,和不可避免的数据库其他原因造成的前台进程等待,这里的等待事件包含buffer类,io类,以及网络类等等,当我们遇到等 ...
- Q准则涡识别方法
Q准则(Q Criterion)在涡识别中计算效率高,效果也不错,是一种常用的涡提取/识别方法. 了解Q准则需要从速度梯度张量入手,而速度梯度张量可以分解成两部分 \[\frac{\partial u ...