DIFFPOOL | 利用可微分池化层构建层级图神经网络

DIFFPOOL - Hierarchical Graph Representation Learning with Differentiable Pooling NIPS 2018 文章目录1 相关介绍相关概念背景介绍模型简介2 相关工作3 DIFFPOOL:可微的pooling方法3.1 问题定义图神经网络堆叠GNNs和pooling层3.2 通过学习聚类分配矩阵来进行可微的poolingQ1: 怎样学习聚类分配矩阵S?Q2: 假定聚类分配矩阵已存在,如何进行Pooling?Permutation invariance排列不变性3.3 Auxiliary Link Prediction Objective and Entropy Regularization4 实验数据集模型配置Ba 阅读详情

Ying, Zhitao, et al. "Hierarchical graph representation learning with differentiable pooling." Advances in neural information processing systems. 2018.

阅读更多,欢迎关注公众号:论文收割机(paper_reader)
因为排版问题,很多图片和公式无法直接显示,欢迎关注我们的公众号点击目录来阅读原文。

引言


 

现有的图神经网络大多数是平面化的(flat)学习方式,也就是所有网络信息的传播(propagation)都可以想象成将网络铺开,在同一个网络平面上点与点之间通过边来进行信息传播。

 

比如我们介绍过的graphsage模型,是直接从周围的邻居节点中aggregate信息。

 

 

而计算机视觉中的卷积神经网络CNN,在学习图片信息时,往往是层级化(hierarchical)地抽取信息,先是从local的pixel中卷积,最终输出一个对全图的信息表达。

 

这种层级化的深度学习架构就能够启发我们,当学习整个图(graph)的embedding,或者对整个图进行分类时,也应该考虑层级化的学习方式。比如,当学习一个分子图(molecular graph)时,我们可以通过层级化的学习方式来同时捕捉到local的信息和global的信息。

 

但是与图像不同,graph并没有办法直接对像素进行aggregation,从而能够设计对应的pooling方式。因为graph中的点是依靠边来连接,在空间上具有复杂的拓扑结构,任意的输入邻接矩阵来进行pooling,只会丢失更多的local信息。

 

因此,针对graph上的pooling层,我们首先需要找到每个节点在空间上的对应位置,也就是找到节点在pooling时属于哪一个cluster。所以,pooling的时候需要同时学习一个可以cluster分类的指标,能够依据node embedding将每个节点对应的cluster找到。

 

DIFFPOOL结构


 

DIFFPOOL结构是在graph中做池化操作的神经网络层,能够与任意的GNN结构组合来学习网络信息,GNN模型是将图的特征X和邻接矩阵A作为输入,最后输出每个节点的embedding。

 

 

Z仍然是具有相同数量n的节点,以及d维的embedding的矩阵。

经过pooling层后,由于节点信息被聚集到cluster中,所以只留下cluster的embedding,所以将得到一个新的更小的图结构,具有m个cluster。所以新的图的邻接矩阵以及特征矩阵分别是:

          

此时的m<n。

 

通过L次操作之后,最终的信息都被pooling到一个cluster中,用一个embedding来表示整个graph的信息。如下图所示

 

所以每层的pooling都是将上一层的特征和邻接矩阵作为输入,并对应输出pooling之后的特征和邻接矩阵:

 

因此graph pooling中最关键的就是如何将每个节点找到其对应的cluster,这就需要学习一个赋值矩阵(assignment matrix)。该赋值矩阵将上一层GNN输出的embedding信息变成Pooling层输出的特征矩阵和邻接矩阵:

 

因此最关键的地方就是在于通过一个具有pooling结构的图神经网络,学习到从上一层输出到下一层的赋值矩阵:

 

该赋值矩阵其实本质上也是定义在图结构上的矩阵,因此可以将该赋值矩阵也通过图神经网络的结构来实现:

除了学习赋值矩阵之外,在优化该目标函数时,除了最终的图分类(graph classification)之外,还需要来考虑相邻的点应该尽可能被赋值到同样的cluster中,因此再加上边对应的regularization

 

另一个优化目标是该赋值矩阵应该尽可能地将节点分配到某一个cluster而不是每个cluster上都有对应的值,因此通过熵最小来减小无序度:

其中H是熵函数(entropy)。

 

实验


 

实验回答了以下三个问题:

  1. 如何比较本文提出的DIFFPOOL与其他的pooling方法?

  2. DIFFPOOL与现有的GNN结合之后,如何与现有的一些,如GNN和kernel-based的图分类的方法进行对比?

  3. DIFFPOOL如何计算出有意义并且可解释的cluster赋值矩阵?

 

 

实验中采用了三种类型的数据集:蛋白质分类,社交网络,以及科学协作图。前两个问题都比较好问答,通过将DIFFPOOL层与现有的graphsage框架结合,提升了图分类的表现。

 

 

而第三个问题则需要对DIFFPOOL进行内部计算的分析:

  • 层级cluster结构,通过对每层中的赋值矩阵中的argmax的计算,得到将每个node分配到下一层中的一个cluster中,通过visualization展示了计算中community的性质能够被很好的保存。

  • 稀疏图和密集图的学习。与聚类算法相似,DIFFPOOL能够将稠密子图学到同一个cluster中。同时,在稀疏图的结构中,一些树状结构或者路径结构的信息,也能够被DIFFPOOL聚集到同一个cluster中。

  • 相似表示的节点被聚类到同一cluster。与普通聚类或者CNN中pooling不同的是,DIFFPOOL的聚类对具有相似特征的节点以及相似neighbor结构的节点的敏感度更高,因为学习的赋值矩阵是通过节点特征学习到的聚类函数,因此即使节点在原图结构上没有连接,但是还是会被学习进同一个cluster中。

 

  • 对最大聚类数的敏感度。当预设的cluster数量很多,虽然会学到更复杂的层级结构,但是也将引入更多的参数,并且也会引入更多noise,从而使模型变得更加低效。但是DIFFPOOL能够通过end-to-end的学习,来使用合适数量的cluster,因为虽然定义的cluster很多,但是有的cluster上的值很小,所以尽管设置了很多的cluster数量,但是实际聚类的cluster数量并不多。

 

总结


 

DIFFPOOL通过定义了新的层级化Pooling层来抽取图的信息,比较关键的点在于通过学习赋值矩阵将不同的节点分配到不同的cluster中,同时结合了边预测的regularization,以及最小化熵值,来共同优化学习卷积参数。

 

该DIFFPOOL层能够被结合进现有的GNN网络结构中,从而学习到更丰富的层级化网络信息。

阅读更多,欢迎关注公众号:论文收割机(paper_reader)
因为排版问题,很多图片和公式无法直接显示,欢迎关注我们的公众号点击目录来阅读原文。

相关文章:

 

阅读原文

 

[Graph Classification] DiffPool 论文笔记 文章目录[Graph Classification] DiffPoolIntroductionAlgorithm [Graph Classification] DiffPool DiffPool是一种可微的图pooling方法,可以生成图的层次表示,并捕捉图的层次结构信息,并且可以结合到很多的GNN模型中。   Introduction DiffPool的方法如上图所示,大致流程为: 通过GNN学习图中节点的embeddings,通过另一个GNN学习节点的分配矩阵 通过分配矩阵,将初始矩阵pooling 阅读详情

相关推荐

【GNN】Diff Pool:网络图的层次化表达

今天学习的是斯坦福大学的同学 2018 年的工作《Hierarchical Graph Representation Learning with Differentiable Pooling》,目前共有 140 多次引用。 目前,GNN 在图分类任务中的处理方法本质上是平面的(Flat),无法学习图形的层次化表达。对于一个包含多个标签的图来说,传统的方法都是为图中每个节点生成一个 Embedding 向量,然后利用这些 Embedding 向量来做全局池化或者输入到 MLP 中来预测图标签,但这种方法忽视了

阿泽的学习笔记 1730

DIFFPOOL(Hierarchical Graph Representation)

Hierarchical Graph Representation Learning with Differentiable Pooling动机核心思想图神经网络可微分池化层 Differentiable Pooling) 论文链接:https://arxiv.org/pdf/1806.08804.pdf 一些概念:置换矩阵:每个行以及每个列都只有一个1的矩阵,其可以看做是单位阵经过行的交换而生成...

weixin_40248634的博客 1287

图神经网络实战——分层自注意力网络

在本节中,我们将学习一种专门用于处理异构图的图神经网络架构,分层自注意力网络 (hierarchical self-attention network, HAN)。我们将介绍其工作原理,以便更好地理解该架构与经典图注意力网络之间的区别。最后,使用 PyTorch Geometric 实现此架构,并将结果与其它 GNN 模型进行比较。

盼小辉丶的博客 9358

[DIFFPOOL] - Hierarchical Graph Representation Learning with Differentiable Pooling 图分类 NeurIPS 2018

文章目录1 相关介绍相关概念背景介绍模型简介2 相关工作3 DIFFPOOL:可微的pooling方法3.1 问题定义图神经网络堆叠GNNs和pooling层3.2 Differentiable Pooling via Learned AssignmentsPooling with an assignment matrixLearning the assignment matrixPermutat...

知行合一,止于至善 1万+

opencv+nvcodec实现视频硬解码

最近遇到一个新项目,AI推理在上,为了方便和节省成本的考虑决定研究下模块。根据官网的说法显卡具有独立的和模块,所以理论上和是独立互不干涉的。以前的项目都只是把显卡当成推理工具,没有将它的功能利用起来,本身也是一种浪费。事实真的有这么丝滑吗?看到这里,如果你真的觉得是白叫的那就真的是了,事实究竟如何,请听我娓娓道来。NVCODEC全称是 NVIDIA VIDEO CODEC,是NVIDIA为绝大多数显卡配置的硬件编解码单元。不一定是所有显卡都有,一般来讲越新的显卡硬件编解码就越强,支持的格式也就越新。

jiexijihe945的博客 1万+

C语言由scanf(“%d“,)非法输入字符造成的死循环及其解决方案

声明:此文章仅作为C语言学习历程中的思路整理,用于解决入门阶段较为浅显的问题,如有错误还请指正。 现象描述: 代码要求实现用户输入1或2,通过scanf("%d",&a)读取这个值,从而判断分属于1或2的两种情况。输入非1,2的数字都应该返回"Invalid Number!",并且要求重新输入数字。 while(a!=1&&a!=2) { printf("Invalid Number!\n"); printf("Enter the number:"); scan

weixin_49764077的博客 8719

DiffPool 笔记 自用

DiffPool 笔记 自用DiffPool 可微池化的层次图表示学习相关概念背景堆叠GNNs和pooling层Diff pool正则化实验 DiffPool 可微池化的层次图表示学习 转载: 版权声明:本文为优快云博主「不务正业的土豆」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.youkuaiyun.com/yyl424525/article/details/103307795 Hierarchical Graph Representati

qq_40515250的博客 2960

WPF窗口定位技巧:从基础到高级的三种实现方法

本文详细解析WPF窗口定位的三种核心方法:屏幕居中(CenterScreen)、父窗口居中(CenterOwner)和手动定位(Manual)。通过对比其适用场景、实现代码与注意事项,帮助开发者根据实际需求选择最佳方案,从而提升WPF应用程序的用户体验与专业度。

weixin_29224309的博客 272

指标实现层级_DIFFPOOL | 利用可微分池化层构建层级图神经网络

Ying,Zhitao,etal."Hierarchicalgraphrepresentationlearningwithdifferentiablepooling."Advancesinneuralinformationprocessingsystems.2018.引言现有的图神经网络大多数是平面化的(flat)学习方式,也就是所有网络信息的传播(pr...

weixin_35261775的博客 393

Ubuntu20.04下SRS流媒体服务器的安装与开机自启动优化指南

本文详细介绍了在Ubuntu20.04系统下安装SRS流媒体服务器并优化开机自启动的完整指南。从基础环境准备、服务管理方案对比到systemd自启动深度优化,提供了实用的配置技巧和排查方法,帮助用户快速搭建稳定的流媒体服务环境。特别推荐使用systemd方案实现高效的自启动管理。

weixin_29313239的博客 412

sql server安装并SSMS连接

  SQL Server是一种广泛应用于网络业务数据处理的关系型数据库管理系统。SQL Server 2016是微软公司研发的新一代旗舰级数据库和分析平台,突出高级分析和丰富可视化,并融合了关键创新功能。其可提供对企业基础架构最高级别的支持,专门针对关键业务应用的多种功能与解决方案提供最高级别的可用性,并提供更多、更全面的功能以满足不同人群对数据的需求,包括支持来自不同网络环境的数据交互、全面的自助分析等创新功能。百度搜索sql server,在官网下载 地址是:SQL Server 下载| Microso

jiankang66的博客 5186

Towards Sparse Hierarchical Graph Classifiers

sparse HIerarchical动机:模型卷积层池化层Redout layer实验 预备知识: 在 numpy中,矩阵的元素操作对矩阵维度的要求,通过一种叫做 broadcasting的机制实现。我们称两个矩阵相容(compatible),如果它们相互对应的维度(行对行,列对列)满足以下条件: 对应的维度均相等, 或 有一个维度的大小是1 矩阵的Hadamard 乘积是一个元素运算,...

weixin_40248634的博客 850

Gromacs实战:从蛋白质-小分子对接到分子动力学模拟全流程解析

本文详细解析了使用Gromacs进行蛋白质-小分子复合物分子动力学模拟的全流程。从处理AutoDock等对接软件的结果文件开始,逐步指导如何为蛋白质和小分子分别生成拓扑文件,并解决力场合并的核心挑战。文章涵盖了构建模拟盒子、添加溶剂离子、能量最小化、平衡模拟以及关键的轨迹分析步骤,为计算生物学和药物设计研究者提供了一套从静态对接到动态评估的完整实战指南。

weixin_29251337的博客 1219

探秘DiffPool:新型图神经网络库,解锁数据集挖掘新可能

探秘DiffPool:新型图神经网络库,解锁数据集挖掘新可能 是一个用于图神经网络(GNN)的开源项目,由 Rex Ying 创建并维护。它主要解决了传统GNN在处理变结构图数据时的局限性,通过对节点聚类实现层次化的图池化操作,为深度学习在复杂异构数据上的应用提供了新的可能。 项目简介 DiffPool的核心在于其引入了一种可微分的池化层,这使得模型能够自适应地学习不同图实例的最优节点聚类方案。通...

gitblog_00050的博客 714

raw (R/G, B/G) 色度域从白点筛选到 mired 直方图的完整构建流程

raw 域用draw​δraw​筛出白点后,。,与 CIE uv 域流程逐步对应。

大熊 39

路径跟踪 | 图解纯追踪算法Pure Pursuit(附ROS C++/Python/Matlab仿真)

纯追踪算法(Pure Pursuit)参考了人类驾驶行为,其基本思想是在待跟踪路径上设置预瞄点(goal-ahead),通过简单的几何方法驱动机器人跟踪预瞄点直至抵达目标位置.本文详细推导纯追踪算法的理论原理及其变种——自适应纯追踪算法(APP)和规范化纯追踪算法(RPP),并提供ROS C++/Python/Matlab三种仿真实现加深理解

FRIGIDWINTER的博客 8408

DiffPool(Differentiable Pooling)数学公式解析

DiffPool(Differentiable Pooling)是一种。DiffPool 的目标是。,可以端到端地训练。

Never Give Up 1041

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

图卷积知识点一些小总结

参考文章:https://zhuanlan.zhihu.com/p/362095540。

bettle_king的博客 1255

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PyTorch Geometric图池化技术:TopK池化、DiffPool等高级技术详解

图池化(Graph Pooling)是图神经网络(GNN)中的关键操作,旨在通过保留重要节点和压缩图结构来降低计算复杂度,同时维持图的关键语义信息。随着图深度学习的发展,TopK池化、DiffPool等高级池化技术逐渐成为处理大规模图数据的核心工具。本文将深入解析PyTorch Geometric(PyG)中实现的主流图池化算法原理、实现细节及应用场景,并通过代码示例展示如何在实际任务中应用这些技...

gitblog_00883的博客 780

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

图池化经典之作: 18NIPS DiffPool

作者:张楚珩单位:清华大学交叉信息研究院原文链接:https://zhuanlan.zhihu.com/p/106214278DiffPool: Differentiable Po...

weixin_45519842的博客 832

使用GraphSAGE+DiffPool进行图分类记录

GraphSAGE和DiffPool操作实录简介(真的是很简单的介绍)实验过程记录使用GraphSAGE的操作一、数据准备二、 代码简述(无监督训练)三、 输出使用DiffPool的操作一、 数据准备二、 代码简述三、 训练输出: 简介(真的是很简单的介绍) GraphSAGE主要是对图(Graph)的节点进行特征表示,特征表示出的节点用于下游任务:如节点分类、图表示等;DiffPool则是对输入的节点特征进行聚合,得到一个聚合的特征用来表示图,通常用于输入一堆图之后进行分类的任务。 实验过程记录 实验过程

Rong_11的博客 3458

神经网络浅讲:从神经元到深度学习

神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向--深度学习的基础。学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术。   本文以一种简单的,循序的方式讲解神经网络。适合对神经网络了解不多的同学。本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文。   神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技...

顺其自然~专栏 3539

图神经网络必读的​5个基础模型: GCN, GAT, GraphSAGE, GAE, DiffPool.

来源:机器学习算法那些事 极市平台https://zhuanlan.zhihu.com/p/136521625本文约6000字,建议阅读10分钟本篇文章将从一个更直观的角度对当前经典流行的GNN网络,包括GCN、GraphSAGE、GAT、GAE以及graph pooling策略DiffPool等等做一个简单的小结。“近年来,深度学习领域关于图神经网络(Graph Neural Networks,...

数据派THU 8711

使用Keras构建具有自定义结构和层次图卷积神经网络(GCNN)

在生活中的某个时刻我们会发现,在Tensorflow Keras中预先定义的层已经不够了!我们想要更多的层!我们想要建立一个具有创造性结构的自定义神经网络!幸运的是,通过定义自定义层和模型,我们可以在Keras中轻松地执行此任务。在这个循序渐进的教程中,我们将构建一个包含并行层的神经网络,其中包括一个图卷积层。那么什么是图上的卷积呢? 图卷积神经网络 在传统的神经网络层中,我们在层输入矩阵X和可训练权值矩阵w之间进行矩阵乘法,然后应用激活函数f。因此,下一层的输入(当前层的输出)可以表示为f(XW)。在图卷

deephub 1万+

秒懂图神经网络(GNN)

在这项任务中,GNN的目标是预测图中每个节点的类别标签。通过这种方式,GNN可以学习到图中的局部结构特征,这对于许多任务,如节点分类、图分类和链接预测等,都是非常重要的。GNN通过分析节点之间的交互模式和它们在图中的位置来预测潜在的联系,类似于根据一个人的朋友圈子来推测他可能结识的新朋友。例如,在社交网络中,人与人之间的友谊关系通过边来表示,每个个体(节点)的社交网络可能对个体的行为和特征产生影响。消息传递允许GNN捕捉图中的结构信息,因为节点的新状态不仅取决于自己的特征,还取决于其邻居的特征。

人工智能前沿分享 1333

python中如何创建一颗多叉树_多叉树的设计、建立、层次优先遍历和深度优先遍历...

多叉树的设计、建立、层次优先遍历和深度优先遍历早起曾实现过一个简单的多叉树《实现一个多叉树》。其实现原理是多叉树中的节点有两个域,分别表示节点名以及一个数组,该数组存储其子节点的地址。实现了一个多叉树建立函数,用于输入格式为A B。A表示节点的名字,B表示节点的子节点个数。建立函数根据用户的输入,首先建立一个新的节点,然后根据B的值进行深度递归调用。用户输入节点的顺序就是按照深度递归的顺序。另外,...

weixin_39668890的博客 4550
上一篇: 最新综述 | 图数据上的对抗攻击与防御
下一篇: KDD’19 | 预测用户和商品的动态嵌入趋势
paper_reader
博客等级 码龄8年 157粉丝 46原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值