掌桥专利:专业的专利平台
掌桥专利
首页

一种图神经网络优化方法、系统、设备及存储介质

文献发布时间:2024-07-23 01:35:21


一种图神经网络优化方法、系统、设备及存储介质

技术领域

本发明涉及深度学习领域,特别涉及一种图神经网络优化方法、系统、设备及存储介质。

背景技术

GNN(Graph Neural Network,图神经网络)的计算主要由更新和聚合两个算子构成,而聚合算子中的冗余又是加速GNN任务的一个重要瓶颈。在GNN的聚合阶段,存在大量的重复的数据和不必要的计算,它们造成了存储资源和计算资源方面的浪费。具体而言,一些节点的邻居节点集之间存在着交集,在进行聚合时,这些交集就会被重复存储和计算。现有技术中HAG(Hierarchically Aggregated computation Graphs,层次聚合计算方法)确实在冗余消除方面做出了一些贡献,但在三个功能(搜索,匹配,集成)上都存在不足,因此未能达到预期加速效果。HAG并没有很好地解决GNN中聚合算子加速这一重要瓶颈。因此,如何消除GNN中固有的冗余数据存储和计算,从而加速端到端性能是目前亟待解决的问题。

发明内容

有鉴于此,本发明的目的在于提供一种图神经网络优化方法、系统、设备及存储介质,能够消除GNN中固有的冗余数据存储和计算,加速GNN端到端训练和推理任务。其具体方案如下:

第一方面,本申请公开了一种图神经网络优化方法,包括:

构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;

根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;

基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;

利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。

可选的,所述构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,包括:

利用所述图神经网络输入图的边集构建所述邻接矩阵;

基于所述邻接矩阵和所述邻接矩阵的转置确定各节点间的初始共同邻居数量矩阵;

基于所述初始共同邻居数量矩阵确定所述共同邻居节点,并利用所述共同邻居节点确定所述冗余串;

利用掩码格式的全部所述冗余串构建所述初始冗余集。

可选的,所述基于所述初始冗余集进行迭代筛选,以得到目标冗余集,包括:

对所述初始冗余集进行去重操作,得到当前去重后冗余集;

基于当前去重后冗余集与当前去重后冗余集的转置的乘积确定当前共同邻居数量矩阵;

对所述当前共同邻居数量矩阵的目标元素进行筛选去重操作,以得到新的当前去重后冗余集,并重新跳转至所述基于当前去重后冗余集与当前去重后冗余集的转置的乘积确定当前共同邻居数量矩阵的步骤,直至当前去重后冗余集为空集;所述目标元素为所述当前共同邻居数量矩阵中大于1的非对角线元素;

对各所述去重后冗余集进行合并,以得到所述目标冗余集。

可选的,所述根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,包括:

确定所述冗余串能覆盖的节点数量;

基于所述节点数量以及所述冗余串的长度确定所述贡献度;

根据所述贡献度按照从大到小的规则对所述目标冗余集中各所述冗余串进行排序,得到所述排序后冗余集。

可选的,所述确定所述冗余串能覆盖的节点数量,包括:

若所述冗余串为任一节点的邻居集的子集时,则判定所述冗余串能覆盖所述节点;

根据相应的判定结果确定所述冗余串能覆盖的节点数量。

可选的,所述基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子,包括:

确定所述目标冗余集中各所述冗余串能覆盖的节点数量是否大于或等于预设数量;

若否,则直接对下一个所述冗余串能覆盖的节点数量是否大于或等于预设数量进行判断;

若是,则将所述冗余串加入所述可用冗余集,以得到最终的可用冗余集;

根据被覆盖的节点对所述数据依赖关系表和所述剩余任务集进行更新,并在所述目标冗余集遍历完成后,将所述数据依赖关系表转换为掩码格式,以得到最终的数据依赖关系表和最终的剩余任务集;

基于所述最终的可用冗余集、所述最终的剩余任务集以及所述最终的数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子。

可选的,所述基于所述最终的可用冗余集、所述最终的剩余任务集以及所述最终的数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子,包括:

将所述最终的可用冗余集和所述最终的剩余任务集基于所述原始聚合算子分别进行聚合,以得到聚合后可用冗余集以及聚合后剩余任务集;

确定所述聚合后可用冗余集与所述最终的数据依赖关系表之间的乘积;

基于所述乘积与所述聚合后剩余任务集之间的和确定对原始聚合算子进行等效替换的修改后聚合算子。

第二方面,本申请公开了一种图神经网络优化系统,包括:

冗余集获取模块,用于构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;

匹配模块,用于根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;

修改后聚合算子确定模块,用于基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;

优化模块,用于利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。

第三方面,本申请公开了一种电子设备,包括:

存储器,用于保存计算机程序;

处理器,用于执行所述计算机程序以实现前述的图神经网络优化方法。

第四方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的图神经网络优化方法。

本申请在对图神经网络进行优化时,首先构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;并根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;然后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;最终利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。可见,本申请通过多级冗余搜索算法收集输入图中的深层冗余,并去除重复和无效冗余,从而得到目标冗余集;这样相比先前的迭代循环方法提高了算法运行速度。然后对目标冗余集进行排序,获得了更好的冗余消除效果。再接着将排序后的冗余集与输入图对应的任务集进行匹配,确定冗余和任务之间的数据依赖关系,大大拓宽了冗余的覆盖广度,得到可用冗余集,剩余任务集,和数据依赖表;最后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子,这样一来,相比原先的串行计算明显提升了GNN端到端的执行速度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请公开的一种图神经网络优化方法流程图;

图2为本申请公开的一种冗余串确定示意图;

图3为本申请公开的一种多级冗余搜索的算法示意图;

图4为本申请公开的一种多级冗余示意图;

图5为本申请公开的一种图神经网络优化系统结构示意图;

图6为本申请公开的一种电子设备结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

现有技术中HAG确实在冗余消除方面做出了一些贡献,但在三个功能(搜索,匹配,集成)上都存在不足,因此未能达到预期加速效果。HAG并没有很好地解决GNN中聚合算子加速这一重要瓶颈。为了解决上述技术问题,本申请公开了一种图神经网络优化方法,能够消除GNN中固有的冗余数据存储和计算,加速GNN端到端训练和推理任务。

参见图1所示,本发明实施例公开了一种图神经网络优化方法,包括:

步骤S11、构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集。

图神经网络是一类专门用于处理图结构数据的深度学习模型。图是由节点(顶点)和边组成的数据结构,其中节点表示实体,边表示节点之间的关系。GNN旨在对图结构进行学习和表示,以便能够对节点和图级别的任务进行有效的预测和推理。本申请的方法主要是基于冗余消除来加速GNN。关于冗余消除问题:观察图的拓扑结构,会发现一些特殊的节点对,这些节点对之间存在着一些共同的邻居节点。GNN聚合层的计算公式如下:

其中i为节点ID(Identity document),n是整个图的总节点数,neighbor(i)是节点i的邻居节点集。在进行聚合运算时,由于节点们需要对自己所有的邻居节点做累加等操作,这些共同邻居节点会在不同的节点聚合任务中出现,这可能导致计算的冗余。由于目前已知的聚合操作大部分属于二元操作,因此只要两个节点的共同(1阶)邻居节点数大于1,就会产生计算冗余。将这种两个节点之间数量大于1的共同邻居们称为冗余串。冗余消除问题的本质是,尽量找到更多的冗余,并覆盖到尽量最多的计算任务。因此该问题能很自然地被分为两部分,冗余的探查,和冗余的采用。冗余探查负责尽可能多地寻找整个聚合任务集里重复的计算;冗余采用负责对这些被找出的重复计算进行取舍,并建立数据依赖关系,从而尽可能多地覆盖任务集。

本实施例中,首先根据输入图的边集构建邻接矩阵adj,边权全部为1。之后计算节点间的共同邻居数目,公式为:

N=adj×adj.T;

其中N为共同邻居数量矩阵,adj.T表示邻接矩阵adj的转置。N[i]表示节点i与各节点之间的共同邻居数目,例如N[i][j]=3意味着i和j之间存在3个共同节点。

确定N后找到N中所有大于1的不在对角线上的元素,通过对这些元素的横纵坐标对应的节点邻接向量取交集来计算共同邻居节点有哪些,这些共同邻居节点们被称为“冗余串”。如图2所示,N中加粗部分表示既不出现在对角线,又大于1的那些元素。N[0][3]=2,表示A与D之间共同邻居数目为2,而为了得到这些共同邻居,则需要计算adj[0]*adj[3]=[0,1,1,0],表示该冗余串为[1,2]。[0,1,1,0]和[1,2]分别对应了该冗余串的两种存储/表示格式:掩码格式和索引格式。接下来,收集所有的冗余串,以掩码格式存放在冗余集redunset中。此时冗余集的尺寸为[redun num,node num],redun num表示N中大于1的非对角线元素个数,node num表示图的节点数目。接着对冗余集进行去重,掩码内容相同的冗余串只保留1个。得到去重后的冗余集,取消指出的是,后续描述中出现的冗余集都默认是经过去重的。

在对冗余集通过合并同类项来去除重复和无效冗余之后,计算冗余串间的共同邻居数目,公式为:

N

其中N1表示1级共同邻居数量矩阵(上述的N其实是N0),redun0表示0级冗余集,(在这里为前述过程得到的redun set)。同样对N1进行大于1的非对角线元素筛选并去重,得到1级冗余集redun1。换句话说,对所述初始冗余集进行去重操作,得到当前去重后冗余集;基于当前去重后冗余集与当前去重后冗余集的转置的乘积确定当前共同邻居数量矩阵;对所述当前共同邻居数量矩阵的目标元素进行筛选去重操作,以得到新的当前去重后冗余集,并重新跳转至所述基于当前去重后冗余集与当前去重后冗余集的转置的乘积确定当前共同邻居数量矩阵的步骤,直至当前去重后冗余集为空集;所述目标元素为所述当前共同邻居数量矩阵中大于1的非对角线元素;对各所述去重后冗余集进行合并,以得到所述目标冗余集。即,重复计算冗余串间的共同邻居数目的步骤,依次得到3级,4级,……i级,直到得到空集为止。在这里,本申请的多级冗余搜索的算法示意图如3所示。

接下来,合并第0级到第n级冗余集,得到去重多级冗余集(即目标冗余集)。举例来说,如图4所示,0级冗余集内容为(索引格式):[[1,2,3,4,5,6,7,8],[1,2,3,99,100,101]],1级冗余集内容为:[1,2,3]。合并后的多级冗余集内容为[[1,2,3,4,5,6,7,8],[1,2,3,99,100,101],[1,2,3]]。

步骤S12、根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表。

本实施例中,在根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序之前,首先需要构造冗余邻居表(Redun Neighbor Set),用于存储冗余集中每个冗余串能用于覆盖哪些节点。具体而言,当一个冗余串是一个节点的邻居集的子集的时候,称该冗余串能覆盖此节点。例如冗余串[1,2,3]能覆盖一个邻居集为[1,2,3,4]的节点。遍历上述过程中得到的整个目标冗余集,建立冗余邻居表。接着根据贡献度从大到小对冗余集进行排序,如果贡献度相同,那么按串长从小到大排序。贡献度的计算公式为:

Contribution(i)=length(i)×time(i);

其中,Contribution(i)表示贡献度,length(i)表示冗余串i的串长,time(i)表示冗余串i能覆盖的节点数量,通过查询冗余邻居表对应行中1的个数得到:time(i)=sum(Redun_neighbor_set(i))。例如冗余集中第i个冗余串,内容为[1,2,3],冗余邻居表第i行的非零项索引为[7,8,9],那么就有Contribution(i)=3*3=9。

将排序后的冗余集与原始邻接矩阵进行数据依赖关系的匹配,换言之就是确定每个节点调用哪些冗余串来覆盖自己的邻居集。此步骤将得到三个矩阵:可用冗余集Rmat(Available Redundancy mat),剩余任务集Umat(Unique task mat),数据依赖关系表QIT(Quick Index Table)。同时需要初始化Rmat=[],Umat=adj_matrix,QIT=[]*node num这三个矩阵。

步骤S13、基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子。

本实施例为系统集成阶段:可用冗余集和剩余任务集在聚合阶段各自分别进行聚合操作,在进入下一层之前根据数据依赖表,通过矩阵乘进行合并,以此等效替换原始的聚合算子。将所述最终的可用冗余集和所述最终的剩余任务集基于所述原始聚合算子分别进行聚合,以得到聚合后可用冗余集以及聚合后剩余任务集;确定所述聚合后可用冗余集与所述最终的数据依赖关系表之间的乘积;基于所述乘积与所述聚合后剩余任务集之间的和确定对原始聚合算子进行等效替换的修改后聚合算子。具体来说,原始的聚合算子的输入为所有节点的权重矩阵W,输出为聚合结果aggr(x)。修改后的聚合算子保持输入和输出与原始算子相同。等效聚合计算公式为:

adj_mat×W=QIT×(R

其中,adj_mat为邻接矩阵,W为原始的聚合算子的输入为所有节点的权重矩阵;R

步骤S14、利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。

本实施例中,基于上述步骤获取到了对原始聚合算子进行等效替换的修改后聚合算子,利用所述修改后聚合算子进行图神经网络计算,相比原先的串行计算明显提升了GNN端到端的执行速度,从而完成了对所述图神经网络的优化。

另外,在后续测试QIT的冗余消除效果时,计算公式为:

其中redun

需要指出的是,本申请的方法可以应用于任何利用到图神经网络的技术场景中。例如,本实施例的方法可以用于社交网络分析领域中进行身份识别的设备。由于在GNN的聚合阶段,存在大量的重复的数据和不必要的计算,它们造成了存储资源和计算资源方面的浪费,拖延了计算速度,因此,本申请从冗余消除角度出发,来对进一步提升图神经网络的计算性能。首先构建社交网络中用户的社交信息图的邻接矩阵,基于所述邻接矩阵确定社交信息图任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;之后根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;之后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;最后利用所述修改后聚合算子对用户社交信息图中各节点的表示进行学习,通过这些表示进行节点分类,例如预测用户的兴趣、年龄段等,以此通过对图神经网络的优化,进一步加速身份识别的速度与效率。

同样的,本实施例的方法可以用于在社交网络分析领域进行链接预测和推荐系统、社区检测以及欺诈检测等等,均能够消除在分析过程中GNN中固有的冗余数据存储和计算,从而加速端到端性能。

综上可知,本申请在对图神经网络进行优化时,首先构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;并根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;然后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;最终利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。可见,本申请通过多级冗余搜索算法收集输入图中的深层冗余,并去除重复和无效冗余,从而得到目标冗余集;这样相比先前的迭代循环方法提高了算法运行速度。然后对目标冗余集进行排序,获得了更好的冗余消除效果。再接着将排序后的冗余集与输入图对应的任务集进行匹配,确定冗余和任务之间的数据依赖关系,大大拓宽了冗余的覆盖广度,得到可用冗余集,剩余任务集,和数据依赖表;最后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子,这样一来,相比原先的串行计算明显提升了GNN端到端的执行速度。

由上一实施例可知,本申请能够基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子。接下来将针对可用冗余集、剩余任务集以及数据依赖关系表这三个矩阵在初始化之后,对原始聚合算子进行等效替换的修改后聚合算子之前的筛选更新过程进行具体的描述。

本实施例中,初始化后,确定所述目标冗余集中各所述冗余串能覆盖的节点数量是否大于或等于预设数量;若否,则直接对下一个所述冗余串能覆盖的节点数量是否大于或等于预设数量进行判断;若是,则将所述冗余串加入所述可用冗余集,以得到最终的可用冗余集;根据被覆盖的节点对所述数据依赖关系表和所述剩余任务集进行更新,并在所述目标冗余集遍历完成后,将所述数据依赖关系表转换为掩码格式,以得到最终的数据依赖关系表和最终的剩余任务集;基于所述最终的可用冗余集、所述最终的剩余任务集以及所述最终的数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子。具体来说,初始化后,对每个冗余串,首先判断它目前能覆盖哪些冗余邻居节点(节点范围是上述步骤得到的冗余邻居表的对应行的非零索引项)。如果能覆盖的节点数小于2,则说明此冗余串无法用于冗余消除,跳过此串进行下一个;如果此冗余串能覆盖的节点数大于2,那么:

(1)将该串加入可用冗余集;

(2)在QIT的被覆盖的那些节点的对应行中加入i,i是该串在可用冗余集中的序号(目前可用冗余集的最大行号);

(3)将剩余任务集的被覆盖的那些节点的对应行中,将该串的组成元素列赋值为0;

(4)冗余集遍历完毕后,将QIT从索引格式转换为掩码格式。

例如对冗余串[1,2,3],开始匹配前其冗余邻居张量的非零索引为[4,5,6],但遍历到此冗余串时,发现节点5已无法被其覆盖(在它之前有其他互斥的冗余串抢先覆盖了节点5),因此能覆盖的节点数=2,可以用于冗余消除。首先把此冗余串的掩码格式[0,1,1,1,0,0,0]加入Rmat队尾,例如入队后Rmat的队长为10。然后把10加入QIT[4]和QIT[6]的队尾。最后令Umat[4]-[0,1,1,1,0,0,0],Umat[6]-[0,1,1,1,0,0,0]。这样便可以基于所述最终的可用冗余集、所述最终的剩余任务集以及所述最终的数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子。

这样一来,本申请通过利用冗余与节点之间多对多的数据依赖关系,大大拓宽了冗余的覆盖广度;提出了并行加速基于冗余消除的聚合算子的策略,相比原先的串行计算明显提升了GNN端到端的执行速度。

参见图5所示,本发明实施例公开了一种图神经网络优化系统,包括:

冗余集获取模块11,用于构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;

匹配模块12,用于根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;

修改后聚合算子确定模块13,用于基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;

优化模块14,用于利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。

综上可知,本申请在对图神经网络进行优化时,首先构建图神经网络输入图的邻接矩阵,基于所述邻接矩阵确定任意两个节点间的共同邻居节点以及冗余串构建的初始冗余集,并基于所述初始冗余集进行迭代筛选,以得到目标冗余集;所述冗余串表征模大于1的共同邻居节点集;并根据所述冗余串的贡献度对所述目标冗余集中各所述冗余串进行排序,得到排序后冗余集,将所述排序后冗余集与所述邻接矩阵基于数据依赖关系进行匹配,以得到可用冗余集、剩余任务集和数据依赖关系表;然后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子;最终利用所述修改后聚合算子进行图神经网络计算,以完成对所述图神经网络的优化。可见,本申请通过多级冗余搜索算法收集输入图中的深层冗余,并去除重复和无效冗余,从而得到目标冗余集;这样相比先前的迭代循环方法提高了算法运行速度。然后对目标冗余集进行排序,获得了更好的冗余消除效果。再接着将排序后的冗余集与输入图对应的任务集进行匹配,确定冗余和任务之间的数据依赖关系,大大拓宽了冗余的覆盖广度,得到可用冗余集,剩余任务集,和数据依赖表;最后基于所述可用冗余集、所述剩余任务集以及所述数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子,这样一来,相比原先的串行计算明显提升了GNN端到端的执行速度。

在一些具体的实施例中,所述冗余集获取模块11,具体可以用于利用所述图神经网络输入图的边集构建所述邻接矩阵;基于所述邻接矩阵和所述邻接矩阵的转置确定各节点间的初始共同邻居数量矩阵;基于所述初始共同邻居数量矩阵确定所述共同邻居节点,并利用所述共同邻居节点确定所述冗余串;利用掩码格式的全部所述冗余串构建所述初始冗余集。

在一些具体的实施例中,所述冗余集获取模块11,具体可以用于对所述初始冗余集进行去重操作,得到当前去重后冗余集;基于当前去重后冗余集与当前去重后冗余集的转置的乘积确定当前共同邻居数量矩阵;对所述当前共同邻居数量矩阵的目标元素进行筛选去重操作,以得到新的当前去重后冗余集,并重新跳转至所述基于当前去重后冗余集与当前去重后冗余集的转置的乘积确定当前共同邻居数量矩阵的步骤,直至当前去重后冗余集为空集;所述目标元素为所述当前共同邻居数量矩阵中大于1的非对角线元素;对各所述去重后冗余集进行合并,以得到所述目标冗余集。

在一些具体的实施例中,所述匹配模块12,具体可以用于确定所述冗余串能覆盖的节点数量;基于所述节点数量以及所述冗余串的长度确定所述贡献度;根据所述贡献度按照从大到小的规则对所述目标冗余集中各所述冗余串进行排序,得到所述排序后冗余集。

在一些具体的实施例中,所述匹配模块12,具体可以用于若所述冗余串为任一节点的邻居集的子集时,则判定所述冗余串能覆盖所述节点;根据相应的判定结果确定所述冗余串能覆盖的节点数量。

在一些具体的实施例中,所述修改后聚合算子确定模块13,具体可以用于确定所述目标冗余集中各所述冗余串能覆盖的节点数量是否大于或等于预设数量;若否,则直接对下一个所述冗余串能覆盖的节点数量是否大于或等于预设数量进行判断;若是,则将所述冗余串加入所述可用冗余集,以得到最终的可用冗余集;根据被覆盖的节点对所述数据依赖关系表和所述剩余任务集进行更新,并在所述目标冗余集遍历完成后,将所述数据依赖关系表转换为掩码格式,以得到最终的数据依赖关系表和最终的剩余任务集;基于所述最终的可用冗余集、所述最终的剩余任务集以及所述最终的数据依赖关系表确定对原始聚合算子进行等效替换的修改后聚合算子。

在一些具体的实施例中,所述修改后聚合算子确定模块13,具体可以用于将所述最终的可用冗余集和所述最终的剩余任务集基于所述原始聚合算子分别进行聚合,以得到聚合后可用冗余集以及聚合后剩余任务集;确定所述聚合后可用冗余集与所述最终的数据依赖关系表之间的乘积;基于所述乘积与所述聚合后剩余任务集之间的和确定对原始聚合算子进行等效替换的修改后聚合算子。

进一步的,本申请实施例还公开了一种电子设备,图6是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。

图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的图神经网络优化方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。

本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。

另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。

其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的图神经网络优化方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。

进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的图神经网络优化方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

相关技术
  • 一种数据存储方法、调度装置、系统、设备及存储介质
  • 一种存储系统的状态检测方法、装置、设备及存储介质
  • 一种数据存储方法、系统、智能可穿戴设备及存储介质
  • 一种存储系统的构建方法、装置、设备及存储介质
  • 一种数据的知识谱图构建方法、装置、设备及存储介质
  • 一种神经网络优化方法、装置、计算设备及存储介质
  • 一种基于图神经网络的非正常关键账户发现方法、系统、设备及存储介质
技术分类

06120116678673