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

GraphPooling简析

GraphPooling简析Pooling是一种用于图表征提取的技术,通常用在图分类上面。一些记号我们记一个带有NNN个节点的属性图(attributedgraph
Graph Pooling 简析

Pooling 是一种用于图表征提取的技术,通常用在图分类上面。


一些记号

我们记一个带有 NNN 个节点的属性图 (attributed graph) 为 G=(X,E)\mathcal{G} = (\mathcal X, \mathcal E)G=(X,E)

其中 X={(i,xi)}i=1:N\mathcal X =\{(i,x_i)\}_{i=1:N}X={(i,xi)}i=1:N 是节点集,xix_ixi 是第 iii 个节点的属性向量

E={((i,j),eij)}i,j∈1:N\mathcal E = \{((i,j), e_{ij})\}_{i,j\in 1:N}E={((i,j),eij)}i,j1:N 是边集,其中 eije_{ij}eij 是边的属性向量

我们记这个图的邻接矩阵为 A∈{0,1}N×NA \in \{0,1\}^{N\times N}A{0,1}N×N

借助论文“Understanding Pooling in Graph Neural Networks” 我们使用其中的 SRC 来对Pooling方法进行总结。

Select, Reduce, Connect

对于Pooling,我们可以理解成一个图到图的映射,即:G→G′=(X′,E′)\mathcal G \rightarrow \mathcal G' = (\mathcal X', \mathcal E')GG=(X,E)

image-20220217213747408

如上图所示,Select函数会将节点划分成多个节点簇,这些节点簇可以被认为是一个超节点

Reduce函数会将一个超节点(可能包含一个或多个节点)映射到一个属性向量,该属性向量对应Pooling后图的超节点

Connect函数会计算出超节点的边集

image-20220217214217638

在Pooling操作之后,我们将一个N节点的图映射到一个K节点的图

按照这种方法,我们可以给出一个表格,将目前的一些Pooling方法,利用SRC的方式进行总结

image-20220218140909561

这里以 DiffPool 为例,说明一下SRC三个部分:

首先,假设我们有一个N个节点的图,其中节点向量记作 X∈RN×dX\in \mathbb R^{N\times d}XRN×d,每个节点向量的维度是 ddd

Select函数会输出一个 N×N′(NN×N(N<N) 的映射矩阵SSS, 也就是将NNN个点映射成N’N’N个点

这里面使用了一个GNN来对矩阵SSS 进行学习

Reduce函数为映射矩阵S乘上一个GNN之后的矩阵&#xff0c;也就是N′×NN&#39;\times NN×N 的矩阵乘上 N×d′N\times d&#39;N×d

输出为 N′×dN&#39;\times dN×d 的一个向量矩阵&#xff0c;代表Pooling一次之后的这些超节点的节点向量

Connect函数输出邻接矩阵A′∈{0,1}N′×N′A&#39;\in \{0,1\}^{N&#39;\times N&#39;}A{0,1}N×N


推荐阅读
  • FIND_IN_SET() 函数用于检查一个字符串是否存在于由逗号分隔的字符串列表中。其语法为:FIND_IN_SET(str, strlist)。该函数返回一个整数值,表示字符串 str 在字符串列表 strlist 中的位置。如果 str 存在于 strlist 中,则返回值范围从 1 到 N(N 为列表中的元素数量)。若未找到,则返回 0。此函数在处理多值字段时非常有用,例如在查询用户权限或标签匹配等场景中。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 为了确保数据库的高效运行,本文介绍了一种方法,通过编写定时任务脚本来自动清理 `order` 表中状态为 0 或为空的无效订单记录。该脚本使用 PHP 编写,并设置时区为中国标准时间,每 10 分钟执行一次,以保持数据库的整洁和性能优化。此外,还详细介绍了如何配置定时任务以及脚本的具体实现步骤。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • 本文探讨了在PHP中实现MySQL分页查询功能的优化方法与实际应用。通过详细分析分页查询的常见问题,提出了多种优化策略,包括使用索引、减少查询字段、合理设置缓存等。文章还提供了一个具体的示例,展示了如何通过优化模型加载和分页参数设置,显著提升查询性能和用户体验。 ... [详细]
  • 在HTML布局中,即使将 `top: 0%` 和 `left: 0%` 设置为元素的定位属性,浏览器中仍然会出现空白填充。这个问题通常与默认的浏览器样式、盒模型或父元素的定位方式有关。为了消除这些空白,可以考虑重置浏览器的默认样式,确保父元素的定位方式正确,并检查是否有其他CSS规则影响了元素的位置。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • ClassList对象学习心得与表单事件非空校验技巧
    ClassList对象学习心得与表单事件非空校验技巧 ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在PHP中,高效地分割字符串是一项常见的需求。本文探讨了多种技术,用于在特定字符(如“或”)后进行字符串分割。通过使用正则表达式和内置函数,可以实现更加灵活和高效的字符串处理。例如,可以使用 `preg_split` 函数来实现这一目标,该函数允许指定复杂的分隔符模式,从而提高代码的可读性和性能。此外,文章还介绍了如何优化分割操作以减少内存消耗和提高执行速度。 ... [详细]
  • 本文介绍了如何使用 Spark SQL 生成基于起始与终止时间的时序数据表。通过 `SELECT DISTINCT goods_id, get_dt_date(start_time, i) as new_dt` 语句,根据不同的时间间隔 `i` 动态填充日期,从而构建出完整的时序数据记录。该方法能够高效地处理大规模数据集,并确保生成的数据表准确反映商品在不同时间段的状态变化。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
author-avatar
无视一个水阿哥_470
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有