CN114298305A - 一种神经网络模型的处理方法及相关设备 - Google Patents

一种神经网络模型的处理方法及相关设备 Download PDF

Info

Publication number
CN114298305A
CN114298305A CN202111675878.1A CN202111675878A CN114298305A CN 114298305 A CN114298305 A CN 114298305A CN 202111675878 A CN202111675878 A CN 202111675878A CN 114298305 A CN114298305 A CN 114298305A
Authority
CN
China
Prior art keywords
node
nodes
processed
equivalent
attribute
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111675878.1A
Other languages
English (en)
Inventor
张俊钦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202111675878.1A priority Critical patent/CN114298305A/zh
Publication of CN114298305A publication Critical patent/CN114298305A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了神经网络模型处理方法及相关设备,由于静态图中预先依据预设的重设节点属性规则和待处理节点配置的等量节点,则在识别出节点为等量节点后,将重设节点属性规则作用于等量节点上,并在完成处理后,断开待处理节点的连接,使得处理后的等量节点替代待处理节点留在静态图中,以得到满足处理需求的处理结果。由于等量节点中的配置信息能够指示处理的规则和待处理节点,所以该方法能够直接快速确定待处理节点并对等量节点和待处理节点进行处理,缩短了神经网络模型的开发周期,大大提升了模型的使用效果。

Description

一种神经网络模型的处理方法及相关设备
技术领域
本发明涉及模型处理技术领域,尤其涉及一种神经网络模型的处理方法及相关设备。
背景技术
深度学习是机器学习领域中一个新的研究方向,是一个复杂的机器学习算法,深度学习可以学习样本数据的内在规律和表示层次,在学习过程中获得的信息对文字、图像或声音等数据的解释有很大的帮助,在语音和图像识别方面取得了显著的效果。在深度学习领域,通常会根据需求训练一个神经网络模型,该神经网络模型通过设计建立适量的神经元计算节点和多层运算层次结构,选择合适的输入层和输出层。利用大量的样本数据,通过网络的学习和调优,建立起输入到输出的函数关系,该关系可以尽可能的逼近现实中的输入和输出之间的关系,如果函数关系达到逼近现实中的输入和输出之间的关系这一效果,则该神经网络模型被训练成功,理论上就可以应用于一些场景,例如语音识别,图像识别等。
但是,训练好的模型在使用前,需要进行上线部署,也就是,将训练好的模型部署到具体的应用环境中或者具体的业务场景下。如果部署过程中存在问题,则需要根据应用环境或者业务的需求对训练好的模型进行一些处理,例如,裁剪,修改或者拆分等,将处理后的模型作为最终上线服务的模型。
该处理过程的效率和处理结果的准确性,直接影响了模型的开发周期和使用效果,因此,如何快速准确的实现对神经网络模型的处理,成为了亟需解决的问题。
发明内容
有鉴于此,本发明实施例公开了一种神经网络模型处理方法及相关设备,以解决现有技术中对神经网络模型的处理效率和准确性低的问题。
一种神经网络模型处理方法,包括:
获取待处理神经网络模型的参考静态图,所述参考静态图根据所述待处理神经网络的静态图预先配置等量节点获得,所述等量节点依据预设的重设节点属性规则和待处理节点配置,所述等量节点与所述待处理节点相连,且连接顺序依据所述重设节点属性规则确定;
依据预设顺序依次读取所述参考静态图中的节点;
在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接;
在所述参考静态图中的等量节点被读取并处理完毕的情况下,确定所述参考静态图中的输入节点、输出节点以及输入节点和输出节点间的中间节点构成的拓扑图,将其作为处理后的静态图;
依据所述处理后的静态图,获得处理后的神经网络模型。
优选的,所述重设节点属性规则包括:重新设定输入节点、重新设定输出节点和重新设定中间节点中的任意一种或多种的组合。
优选的,所述依据所述重设节点属性规则设定所述等量节点的属性包括:
若所述重设节点属性规则为重新设定输入节点,则设定所述等量节点的属性为输入节点;
若所述重设节点属性规则为重新设定输出节点,则设定所述等量节点的属性为输出节点;
若所述重设节点属性规则为重新设定中间节点,则设定所述等量节点的属性为中间节点。
优选的,所述依据所述重设节点属性规则确定等量节点与所述待处理节点连接顺序的过程包括:
若重设节点属性规则是重新设定输入节点,则等量节点代码编译后的等量输入节点是所述待处理节点的后置节点;
若重设节点属性规则是重新设定输出节点,则等量节点代码编译后的等量输出节点是所述待处理节点的前置节点;
若重设节点属性规则是重新设定中间节点,则等量节点代码编译后的等量中间节点是所述待处理节点的后置节点。
优选的,所述在所述待处理神经网络的静态图中,预先配置等量节点后得到参考静态图的过程包括:
确定与处理需求对应的重设节点属性规则,以及各重设节点属性规则对应的待处理节点;
生成与所述重设节点属性规则对应的待处理节点的等量节点代码;
依据预设添加规则,在所述待处理神经网络原始代码中添加所述等量节点代码,作为参考代码;
编译所述参考代码,得到静态图,将其作为参考静态图。
优选的,所述等量节点代码包括:函数名称和函数输入,其中,所述函数名称用于表征所述重设节点属性规则,所述函数输入包括所述待处理节点。
优选的,在所述重设节点属性规则是重新设定中间节点的情况下,所述等量中间节点代码包括:等量前置替换裁剪代码和等量后置替换裁剪代码,其中,所述等量前置替换裁剪代码的函数名称用于表征重设节点属性规则,函数输入包括所述待处理节点、所述待处理节点的前置节点以及第一等量节点标识;所述等量后置替换裁剪代码的函数名称用于表征重设节点属性规则,函数输入包括所述待处理节点、所述待处理节点的后置节点及第二等量节点标识,所述第一等量节点标识与所述第二等量节点标识相同。
优选的,若重设节点属性规则是重新设定中间节点的情况下,依据所述重设节点属性规则确定等量节点与所述待处理节点连接顺序包括,所述等量节点包括:等量前置替换裁剪代码对应的等量前置替换节点,和等量后置替换裁剪代码对应的等量后置替换裁剪代码,所述待处理节点位于所述等量前置替换代码节点和所述等量后置替换裁剪代码之间。
优选的,所述在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接的过程包括:
在读取到的节点为等量前置替换裁剪节点的情况下,确定与其对应的等量后置替换裁剪节点;
合并所述等量前置替换裁剪节点和所述等量后置替换裁剪节点,并设定合并后的节点为等量中间节点;
断开所述等量中间节点和所述待处理节点的连接。
一种神经网络模型处理装置,包括:
参考静态图获取模块,用于获取待处理神经网络模型的参考静态图,所述参考静态图根据所述待处理神经网络的静态图预先配置等量节点获得,所述等量节点依据预设的重设节点属性规则和待处理节点配置,所述等量节点与所述待处理节点相连,且连接顺序依据所述重设节点属性规则确定;
节点读取模块,用于依据预设顺序依次读取所述参考静态图中的节点;
节点处理模块,用于在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接;
拓扑图生成模块,用于在所述参考静态图中的等量节点被读取并处理完毕的情况下,确定所述参考静态图中的输入节点、输出节点以及输入节点和输出节点间的中间节点构成的拓扑图,将其作为处理后的静态图;
模型确定模块,用于依据所述处理后的静态图,获得处理后的神经网络模型。
一种存储介质,所述存储介质包括存储的程序,
其中,在所述程序运行时控制所述存储介质所在的设备执行以上所述的神经网络模型处理方法。
一种处理器,所述处理器用于运行程序,
其中,所述程序运行时执行以上所述的神经网络模型处理方法。
本发明所示实施例公开的神经网络模型处理方法,由于静态图中预先依据预设的重设节点属性规则和待处理节点配置的等量节点,则在识别出节点为等量节点后,将重设节点属性规则作用于等量节点上,并在完成处理后,断开待处理节点的连接,使得处理后的等量节点替代待处理节点留在静态图中,以得到满足处理需求的处理结果。由于等量节点中的配置信息能够指示处理的规则和待处理节点,所以该方法能够直接快速确定待处理节点并对等量节点和待处理节点进行处理,缩短了神经网络模型的开发周期,大大提升了模型的使用效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的将Python代码转换为静态图的过程示意图;
图2为本发明实施例提供的处理神经网络模型的流程示意图;
图3为本发明实施例提供的参考静态图的示意图;
图4为本发明实施例提供的又一参考静态图的示意图;
图5为本发明实施例提供的预先配置等量节点得到参考静态图的流程示意图;
图6为本发明实施例提供的一种静态图的示意图;
图7为本发明实施例提供的在图6所示静态图的原始代码中添加等量节点代码的示例;
图8为图7所示代码编译后得到的参考静态图示意图;
图9为图8所示参考静态图处理后的静态图示意图;
图10为图8所示参考静态图又一处理后的静态图示意图;
图11为本发明实施例提供的又一静态图的示意图;
图12为本发明实施例提供的在图11所示静态图的原始代码中添加等量节点代码的示例;
图13为图12所示代码编译后得到的参考静态图示意图;
图14为图13所示参考静态图处理效果图示意图;
图15为图13所示参考静态图处理后静态图示意图
图16为本发明实施例公开的一种神经网络处理装置的结构示意图;
图17为本发明实施例公开的参考静态图生成模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
神经网络模型的训练过程和投入使用的过程,通常是独立的,所以在将神经网络模型训练完成后,还可能面临一些需要对神经网络进行处理的场景,例如,将训练好的神经网络模型部署到具体的应用环境中或者具体的业务场景时,需要依据具体的业务场景需求对训练好的神经网络模型进行一些处理,例如,训练好的模型包含多个子模型,而实际的业务场景下,只需要使用其中的一个子模型,则需要对训练好的模型进行裁剪处理,只保留训练好的模型中的一个子模型来做线上服务。
另一种情况是,一个训练好的模型如果太大,一台服务器可能无法实现搭载,那么就会将该模型做拆分,把模型中的一部分拆解出来,放到另外一个服务器中部署,然后在线上推理的时候,一个模型就被拆成两部分的进行线上服务,并且需要两个部分结合的新操作,最终实现一个模型可以完整的运行起来。
再或者,训练好的模型的运算量很大,为了缩减运算量,对模型的中间节点进行裁剪,以简化模型架构。
深度学习模型通常都会有模型代码,模型代码通常都是Python编写的,Python代码虽然方便编写,但是执行效率比较低。为了提高执行效率,python模型代码会被深度学习框架,比如Tensorflow进行处理,以生成静态的模型计算图,以下简称静态图,然后用静态图来做训练或者上线推理。如图1所示为将Python代码转换为静态图的过程示意图。其中,节点X1,X2,X3是模型的输入节点,A,B,C是模型参数输入,Y1和Y2是模型输出节点。中间节点包括加法节点add,乘法节点matmul_1和matmul。在对模型处理时,通常是对输入节点输出节点和中间节点的处理。
以上所举出的对训练好的模型进行裁剪或者拆分的过程,可以概括为对模型的处理过程。在面对模型的处理需求时,通常可以借助静态的模型计算图来确定处理需求对应的节点,例如重新设定模型的输入或者输出节点,则需要在静态图中重新选择节点设定为新的输入或输出节点,而在输入节点之前的其他节点,就需要被删除,在输出节点之后的节点,需要被删除。而如果删除的是中间节点,则需要修改与该中间节点有连接关系的仍然保留的节点的连接关系,例如,将原来通过这个中间节点相连的两个节点直接连接。
这些操作都可以通过修改静态图实现,进而实现对模型代码的修改,最终完成对模型的处理。
但是,利用静态图对模型进行处理后,经常出现一些问题,例如,处理后的神经网络模型无法正常工作等。
发明人经研究发现,导致这些问题产生的原因在于执行拆分操作或者裁剪操作时,选择的节点出错,虽然静态图能够直观的展现模型中各个节点之间的拓扑连接关系,但是由于模型中的节点非常多,拓扑结构也非常复杂,在选择处理需求对应的节点时,仍然存在一定的困难,很难保证准确快速的找到要处理的节点。而一旦节点选择错误,在执行处理操作后的模型就会出现无法运行或者运行出错的问题,想要解决这些问题,就要重新再去执行选择节点处理节点的过程,从而导致模型的上线操作步骤繁琐,影响了模型的开发周期和使用效果。
为了解决目前对训练好模型(以下简称待处理神经网络模型)进行处理的过程中的问题,发明人进行了深入的分析,为了能够准确的找到与处理需求对应的节点进行处理,可以在静态图中添加一些信息对这些节点进行指示,这样在对静态图进行分析时,就能够准确的找到要处理的节点。例如,在训练好的模型的代码中,找到需要处理的节点,在这些节点的代码中做一些处理,例如添加一些字段表征把这个节点作为新的输入节点或者输出节点,或者改变其上下级节点的名称以改变这个节点在静态图中的连接关系,使得修改后的模型代码在转换为静态图时,读取到这些节点的信息时,能够通过这些字段识别出这是要被处理的节点,从而实现对要处理的节点的准确查找,并且可以对其进行快速的处理。
但是,这种方式要对模型的代码进行修改,稍有不慎就可能带来误操作,而且模型的代码非常复杂,这种修改会给模型的性能带来一些无法预料的影响。
有鉴于此,发明人继续研究,提出了以下方案:
在面临对待处理神经网络模型进行处理的需求时,确定处理需求对应的重设节点属性规则和待处理节点后,为待处理节点生成一个与其相连的等量节点,等量节点和待处理节点一起存在于参考静态图的拓扑结构中,等量节点是依据预定的重设节点属性规则和待处理节点配置得到的,在参考静态图进行对待处理神经网络模型进行处理时,读取参考静态图中的节点,如果读取到等量节点,依据重设节点属性规则对等量节点的属性进行重设,并断开与待处理节点的连接,使得被处理后的等量节点能够替代待处理节点保留在拓扑结构中,以实现对待处理神经网络模型的处理。该方法可通过等量节点快速准确的确定待处理节点及通过重新设定等量节点的属性,实现对神经网络模型的处理。并且,重设节点属性的操作作用于等量节点而非模型中原有的节点,所以不涉及对模型中原有节点属性修改的操作,提升了系统的稳定性。
本申请实施例公开了一种神经网络模型处理方法,其流程如图2所示,包括:
步骤S201:获取待处理神经网络模型的参考静态图。
本实施例中,在确定待处理的神经网络模型后,并不针对待处理神经网络模型直接处理,而是借助于神经网络模型的静态图来实现。本实施例中获取的不是待处理神经网络的原始静态图,而是参考静态图。参考静态图根据待处理神经网络的静态图预先配置等量节点获得,也就是说,参考静态图中除了包含原始静态图中的各个节点外,还包含预先配置的等量节点。
本实施例中的等量节点是依据预定的重设节点属性规则和待处理节点配置得到的。其作用是对待处理节点进行替换,将根据处理需求需要对待处理节点进行的处理作用在等量节点上,实现对待处理节点的等同替换的作用。
重设节点属性规则,是对节点的属性进行重新设定的规则,节点的属性包括输入节点、输出节点或中间节点,在面临对神经网络模型进行处理的需求时,无论是裁剪分支还是替换节点,都可以转换为对模型中节点的属性进行设定的操作,所以本实施例中的,重设节点属性规则就是对节点的属性进行重新设定的规则。重设节点属性规则包括:重新设定输入节点、重新设定输出节点和重新设定中间节点中的任意一种或多种的组合。具体的重设节点属性规则包含哪些规则与对待处理神经网络进行处理的需求相关。
待处理节点是与处理需求对应的节点,也就是说,在预先了解处理需求后,确定出的要对哪些节点进行处理能够满足处理需求,而这些节点就是待处理节点。等量节点与待处理节点相连,且连接顺序依据重设节点属性规则确定。
如图3所示为待处理神经网络的参考静态图,其中节点X1、节点A、节点sub、节点matmul和节点Y1,都是待处理神经网络的原始静态图中的节点,而标记有等量-输入和等量-输出的两个节点是两个等量节点的示例。在本示例中,与等量-输入节点对应的待处理节点为X1,而与等量输出节点对应的待处理节点为Y1。
由于等量节点是依据的重设节点属性规则和待处理节点配置得到的,所以等量节点的配置信息中相应的包含有能够指示待处理节点和重设节点属性规则的信息。
步骤S202:依据预设顺序依次读取参考静态图中的节点。
本实施例中,该步骤中的预设顺序可以为采用广度优先搜索的方式依次读取节点,也可以采用深度优先搜索的方式依次读取节点。如果采用广度优先搜索的方式,则预设的读取顺序则是从一个输入节点开始,依次读取和这个输入节点有连接的节点,也就是相邻的节点,然后再依次读取每个相邻节点的相邻节
如果采用深度优先搜索的方式,则是从输入节点开始,依次向上读取直到输出节点,然后再退回到上一节点,再去寻找新的分支再向上读取,依次读取参考静态图中的节点。
步骤S203、在读取到的节点为等量节点的情况下,依据重设节点属性规则设定等量节点的属性,并断开与待处理节点的连接。
按照顺序读取到每个节点的配置信息,参考静态图中的输入节点、输出节点和中间节点所携带的信息包括:节点属性,节点连接关系等等。其中,节点属性包括:输入节点、输出节点或中间节点。节点的连接关系也就是节点在静态图的拓扑结构中的前置节点和后置节点。而等量节点被配置的信息中包含有指示处理规则的信息,所以在读取到等量节点的时候,则获取到重设节点属性规则,根据该处理规则,设定等量节点的属性,例如,若重设节点属性规则为重新设定输入节点,则设定等量节点的属性为输入节点。
若重设节点属性规则为重新设定输出节点,则设定等量节点的属性为输出节点。
若重设节点属性规则为重新设定中间节点,则设定等量节点的属性为中间节点。
断开连接后的待处理节点可以直接被删除,同时删除仅与待处理节点有连接关系的节点分支。因为一旦待处理节点被删除,这个分支也就无法存在于拓扑图中则也应被删除。如图4中所示,如果此时待处理节点是节点sub。在设定等量节点为等量输入节点后,断开与待处理节点sub的连接后,如果删除节点sub,则虚线框中以sub为终点的分支也就没有办法再与拓扑图中的其他节点相连,则此时要将分支中的节点X1和节点A一起删除。
在某些情况下,断开连接后的待处理节点可以仍然保留在参考静态图中,而将根据处理需求对应的节点组成的拓扑结构从参考静态图中直接提取出来,作为处理后的结果,本实施例中仅通过断开连接的操作,使得待处理节点和拓扑结构中的其他的节点没有连接关系,以便于后续根据具体的需求进行处理。
由此可以看出,本申请中虽然处理的对象是节点,但是由于拓扑图中各个节点间存在拓扑关系,所以对节点的处理可以直接影响包含节点在内的分支,基于此能够实现本申请中对待处理神经网络模型的处理。
步骤S204、在参考静态图中的等量节点被读取并处理完毕的情况下,确定参考静态图中的输入节点、输出节点以及输入节点和输出节点间的中间节点构成的拓扑图,将其作为处理后的静态图。
在上一步骤中,将待处理节点与等量节点的连接断开后,意味着待处理节点从拓扑图中被剔除,带来拓扑图中节点拓扑关系的变化。同时由于输入输出或者中间节点被重新设定,也会带来拓扑图中剩余节点的拓扑关系的变化,所以此处,重新根据输入输出节点计算出中间节点,构成新的拓扑图,作为处理后的静态图。
步骤S205、依据处理后的静态图,获得处理后的神经网络模型。
在得到处理后的静态图后,通过反编译得到处理后的神经网络的代码,进而得到处理的神经网络模型。
图1所示实施例公开的神经网络模型处理方法,由于静态图中预先依据预设的重设节点属性规则和待处理节点配置的等量节点,则在识别出节点为等量节点后,将重设节点属性规则作用于等量节点上,并在完成处理后,断开待处理节点的连接,使得处理后的等量节点替代待处理节点留在静态图中,以得到满足处理需求的处理结果。由于等量节点中的配置信息能够指示处理的规则和待处理节点,所以该方法能够直接快速确定待处理节点并对等量节点和待处理节点进行处理,缩短了模型的开发周期,大大提升了模型的使用效果。
上述实施例对处理神经网络模型的流程和效果行了说明。由此可以看出,等量节点在该方案中的作用非常关键。根据待处理神经网络的静态图预先配置等量节点获得具体实现过程,可以通过在待处理神经网络模型的原始代码中添加等量节点代码而实现,并在添加等量节点代码后,再将神经网络模型代码编译得到静态图,此时的静态图就会包含等量节点。
同理,为了不影响神经网络模型的正常工作,在其原始代码中添加的等量节点代码为透传代码,例如,具有透传功能的接口程序代码,其仅做为数据传递的节点,并不会对数据进行处理。即便是将带有等量节点代码的神经网络模型进行训练,也不会影响神经网络模型的性能。
在以上实施例中,预先配置等量节点得到参考静态图的过程,可以通过预先编译的工具来实现,该预先编译的工具可以是图2所示实施例中,执行对参考静态图处理的工具,也可以是独立的工具,在此不做限定。无论是哪个工具来执行,其遵循的原则和流程基本相同。
下面结合图5,对预先配置等量节点得到参考静态图的过程进行详细说明,包括:
步骤S501:确定与处理需求对应的重设节点属性规则,以及各重设节点属性规则对应的待处理节点。
在工具启动后,首先确定重设节点属性规则和与重设节点属性规则对应的待处理节点。该确定过程可以是接收包含重设节点属性规则和各重设节点属性规则对应的待处理节点的信息,直接从信息中获取重设节点属性规则和与重设节点属性规则对应的待处理节点。也可以是接收表征处理需求的信息,按照预定的分析规则,对处理需求进行分析后得到重设节点属性规则和与重设节点属性规则对应的待处理节点。其具体实现过程并不限定。
如图6所示为静态图中包含有三个输入节点X1、X2和X3,两个输出节点Y1和Y2,以及输入节点和输出节点之间的若干中间节点。如果此时的处理需求是保留虚线框中的节点构成的拓扑结构。则分析被保留的节点的拓扑结构可以看出,保留的节点的拓扑结构与静态图的原来的拓扑结构相比,输入、输出节点都发生了变化,则为了保证被保留的节点能够成为一个完整的拓扑结构,则需要为保留的节点设定输入节点和输出节点。
所以,与处理需求对应的处理规则包括:重新设定输入节点,重新设定输出节点,并且,可以重新设定多个输入节点和多个输出节点。
对应于图6中所示的虚线框中的拓扑结构,本实施例中需要重新设定两个输入节点和一个输出节点,则重设节点属性规则包括:重新设定第一输入节点、重新设定第二输入节点和重新设定输出节点。
当然,在其他处理需求下,还可以包括重新设定中间节点,并且重新设定的中间节点也可以为多个。
根据图6中所示处理需求,可以直接确定将静态图中的哪些节点作为输入节点,哪些节点作为输出节点。在本实施例中,将节点add作为第一输入节点,节点X2作为第二输入节点,则待处理节点为节点add和节点X2。将节点Y1作为输出节点,则待处理节点为节点Y1。
则本实施例中重新设定第一输入节点这一规则对应的待处理节点为节点add,重新设定第二输入节点这一规则对应的待处理节点为节点X2;重新设定输出节点这一规则对应的待处理节点为Y1。
步骤S502:生成与重设节点属性规则对应的待处理节点的等量节点代码。
等量节点代码包括:函数名称和函数输入,函数名称用于表征重设节点属性规则,函数输入包括待处理节点。
以图6所示示例中,重设节点属性规则为重新设定第一输入节点为例,其等量节点代码为等量输入代码tf.equivalent_input(node),其表示的含义为,将节点node作为等量输入的节点,也就是将待处理节点设定为等量输入的节点,本实施例中待处理节点为add,则其对应的等量输入节点代码为equivalent input(add),该等量输入代码所生成的节点,用于作为待处理节点的等量节点。也就是说,在本申请中,如果在处理需求中,需要将add设定为第一输入节点,那么在本步骤中就生成一个等量输入代码,这个等量输入代码生成的节点是节点add的等量节点,在后续处理中,它用于替代add被设定为第一输入节点。因为函数输入为待处理节点,则该等量输入代码生成的节点的配置信息中包含有指示待处理节点的信息,而函数名称则是指示待处理规则的信息。
重设节点属性规则为重新设定第二输入节点的情况下,其对应的等量节点代码与上述示例中类似,也是等量输入节点代码,只需要变换函数输入中的待处理节点为X2即可,则等量输入代码tf.equivalent_input(X2)。
重设节点属性规则为重新设定输出节点时,则其对应的等量节点代码可以为等量输出节代码tf.equivalent_output(Y1),这个代码生成的节点是Y1的等量节点。
重设节点属性规则为重新设定中间节点时,假设此时的待处理节点为图6中所示的与节点add相连的节点matmul_1,则其对应的等量节点代码可以为等量替换代码tf.equivalent_replace(matmul_1),这个代码生成的节点是一个与matmul具有相同作用的等量中间节点。可以看做等量中间节点,可以直接替换matmul这一节点。
本实施例中的等量节点代码以python接口程序为例,在实际的应用中,等量节点代码可以有多种实现形式。
为了保证待处理神经网络模型的稳定性,本实施例中的等量节点代码均为等量透传代码,其生成的节点也为等量透传节点,不会对待处理神经网络的数据处理带来影响。
步骤S503:依据预设添加规则,在待处理神经网络原始代码中添加等量节点代码,作为参考代码。
该预设添加原则为:满足等量节点和待处理节点的连接顺序与等量节点的重设节点属性规则对应这一条件。
生成的等量节点代码需要添加到原始代码中,与原始代码共同编译最终以节点的形式展现在静态图中。在添加时,可以将等量节点代码添加到原始代码的特定位置,例如代码的开始部分,或者结束部分。或者,可以将其添加在待处理节点对应的代码之后,以便于在编译时能够连续的编译待处理节点和其对应的等量节点,无论哪种方式,都需要满足等量节点和待处理节点的连接顺序与等量节点的重设节点属性规则对应这一条件。
等量节点和待处理节点的连接顺序与等量节点的处理规则之间的对应关系具体为如下:
如果重设节点属性规则是重新设定输入节点,则等量节点代码编译后的等量输入节点是待处理节点的后置节点。
如果重设节点属性规则是重新设定输出节点,则等量节点代码编译后的等量输出节点代码是待处理节点的前置节点。
如果重设节点属性规则是重新设定中间节点,则等量节点代码编译后的等量中间节点代码是待处理节点的后置节点。
等量节点和待处理节点的连接顺序按照以上规则设定,是为了保证在后续静态图中节点的处理过程中,断开待处理节点后,等量节点仍然能够保留在拓扑结构中,代替待处理节点成为新的输入、输出或者中间节点。
仍以图6所示为例,为了实现将虚线框内的拓扑结构保留,则对应生成的等量代码,并将等量代码添加到图4对应的原始代码的结果如图7所示。其中线框中的代码为添加的等量节点代码。
步骤S504、编译参考代码,得到静态图,将其做为参考静态图。
在参考静态图中包含有与等量节点代码对应的节点,将其定义为等量节点。
将图7中的代码进行编译后,得到的参考静态图如图8所示,可以看出,添加的等量节点代码已经显示在参考静态图中,例如,连接于节点add和节点matmul_1之间的标记有等量输入的节点,连接于节点X2和节点sub之间的标记有等量输入的节点,以及连接于节点matmul和Y1之间的标记有等量输出的节点。
本实施例公开的预先配置等量节点得到参考静态图的流程中,在确定待处理节点后,生成与待处理节点和重设节点属性规则对应的等量节点代码,并添加到原始代码中,以用于在编译代码后,生成一个等量节点。并将其位置设定为与待处理节点相连,且连接顺序与重设节点属性规则对应,等量节点和待处理节点一起存在于参考静态图的拓扑结构中。由于等量代码依据待处理节点和重设节点属性规则生成,所以其对应的等量节点的配置信息可以用来指示待处理节点以及重设节点属性规则,所以在后续处理参考静态图的过程中,能够读取到这些信息以确定需要以何种方式处理待处理节点。并且,此时将原本对待处理节点进行的处理操作,作用在等量节点上,该操作不会对待处理神经网络模型的性能造成影响,为神经网络模型的处理过程提供了可靠的稳定的基础。
本实施例中仅以处理需求对应的重设节点属性规则包括以上内容为例,具体的应用场景下,可能同时包含以上所有的重设节点属性规则,且重新设定的输入节点、输出节点和中间节点的个数也可能会存在多个。只是无论具体的重设节点属性规则包含多少个,都被归结在重新设定输入节点、重新设定输出节点和重新设定中间节点这三类规则下。这三类规则的组合即可涵盖目前对神经网络模型进行处理的需求。
以图8所示参考静态图为例,对待处理神经网络模型进行处理的过程进行示例性说明。
首先获取参考静态图,按照从输入节点到输出节点的顺序依次读取参考静态图中的节点,当读取到第一个等量节点时,获取等量节点的重设节点属性规则和待处理节点,重设节点属性规则为重新设定输入节点,待处理节点为add,则将等量节点设定为等量输入节点,同时断开等量输入节点和待处理节点add的连接。这一操作也意味着断开了以add为终点的分支。
以此类推,将其他的等量节点都进行读取并处理。在所有的等量节点都处理完毕的情况下,参考静态图中已经确定好新的输入节点和输出节点,则确定输入节点和输出节点之间的中间节点,构成新的拓扑图,做为处理后的静态图。
如图9中所示,新的拓扑结构为实线框内的部分,虚线框内的部分为在本次处理中被删除的节点。
在图5所示实施例中,生成等量节点代码时,由于其与待处理节点为等同作用,则可以用待处理节点的标识作为等量节点的标识。
进一步的,为了能够更加清楚的显示出参考静态图中等量节点,可以在生成等量节点代码时,为其设定新的标识,达到这一目的只需修改等量节点代码的即可。例如,等量输入节点代码可以为tf.equivalent_input(add,name=“x1”),除了代码原有的函数输入add外,还增加了函数输入x1,以作为等量输入节点的标识。等量输出代码可以为tf.equivalent_output(Y1,name=“y1”),用y1作为等量输出节点的标识。以此为例,则图8所示参考静态图被处理后的参考静态图如图10所示。
等量中间代码可以为tf.equivalent_replace(matmul,name=“new”),用new作为等量中间代码的标识。
在图5所示示例中示出的等量中间代码,虽然能够标示出待处理节点是哪一个,但是考虑到重新设定中间节点的过程中,中间节点的连接关系也是非常关键的因素,如果出现错误,也会带来后续处理过程的失误。
为了解决这一问题,本申请公开了另一种设定等量中间代码的方式。
在重设节点属性规则是重新设定中间节点的情况下,等量中间节点代码包括:等量前置替换裁剪代码和等量后置替换裁剪代码,其中,等量前置替换裁剪代码的函数名称用于表征重设节点属性规则,函数输入包括待处理节点、待处理节点的前置节点以及第一等量节点标识;等量后置替换裁剪代码的函数名称用于表征重设节点属性规则,函数输入包括待处理节点、待处理节点的后置节点及第二等量节点标识,第一等量节点标识与第二等量节点标识相同。
在该方法中,等量中间代码用两个成对的代码来组成,两个代码中分别包含用于指示待处理节点的前置节点和后置节点的信息。
比如,等量前置替换裁剪代码:tf.equivalent_pre(node,replace_to_new),用来指示待处理节点的前置节点。
其中node表示的是要被处理的待处理节点的前置节点名称,replace_to_new为第一节点标识。
等量后置替换裁剪代码:tf.equivalent_post(node,replace_to_new,name)用来指示待处理节点的前置节点。
其中node表示的是要被处理的待处理节点的后置节点名称,replace_to_new为第二等量节点标识。
两个代码中第一节点标识和第二节点标识都是replace_to_new,这样来保证两个代码是配对出现的,一个用来表征待处理节点的前置节点,一个用来表征待处理节点的后置节点,这样就可以准确确定出待处理节点的位置以及待处理节点的连接关系。最后用replace_to_new这个等量节点代替待处理节点。
在本实施例中,相应的,等量中间节点也包含一对等量节点,即作为待处理节点的前置节点的等量前置替换裁剪节点,以及,作为待处理节点的后置节点的等量后置替换裁剪节点。也就是说,依据重设节点属性规则来确定待处理节点和等量节点的关系时,待处理节点位于等量前置替换裁剪节点和等量后置替换裁剪节点之间。
以图11中所示静态图为例,结合上述等量中间代码的生成方式,对待处理模型进行的过程进行说明。
图11虚线中是需要删除的节点,可以看出其处理需求是删除以matmu_l为终点的分支,也就是说,重新设定add和matmul的中间节点,则处理规则为重新设定中间节点,待处理节点为matmul_1,则生成的等量中间节点代码为等量前置替换裁剪代码tf.equivalent_pre(add,replace_to_new=“new_op”)和等量后置替换裁剪代码tf.equivalent_post(matmul_1,replace_to_new=
“new_op”)。这两段代码生成的等量节点,作为指示待处理节点的前置节点和后置节点。
将这两段代码添加到待处理神经网络模型的原始代码后的示意图,如图12所示,其中虚线框中为添加的等量节点代码。
虽然代码有两段,但是由于节点中新节点的名称相同,所以意味着这两段代码需要成对使用,如编译后的参考静态图图13所示,两个三角形的顶点都指向同一个位置,也就是待处理节点的位置。
对参考静态图进行处理的过程中,从输入节点X1开始读取各个节点,当读取到等量前置替换裁剪节点时,通过配置信息能够确定与其对应的等量后置替换裁剪节点,因为两个节点最终要被一个节点替代,则合并等量前置替换裁剪节点和等量后置替换裁剪节点,并设定合并后的节点为等量中间节点new_op,设定完成后,即可断开与待处理节点matmul_1的连接,如图14所示。则此时留在拓扑结构中的节点new_op替代节点matmul_1构成了处理后的参考静态图,最后,以处理后的参考静态图为依据,得到处理后的神经网络模型如图15所示。
本实施例图中所示的待处理节点为一个节点,在其他的处理需求下,待处理节点还可以是多个连续的节点,则在利用本实施例中的方法进行处理时,只需将等量前置替换裁剪节点设定为多个待处理节点的前置节点,将等量后置替换裁剪设定为多个待处理节点的后置节点。则可以依据以上步骤实现对多个待处理节点的裁剪或者替换。
本申请公开了一种神经网络模型处理装置,其结构如图16所示,包括:
参考静态图获取模块1601,用于获取待处理神经网络模型的参考静态图,所述参考静态图根据所述待处理神经网络的静态图预先配置等量节点获得,所述等量节点依据预设的重设节点属性规则和待处理节点配置,所述等量节点与所述待处理节点相连,且连接顺序依据所述重设节点属性规则确定;
节点读取模块1602,用于依据预设顺序依次读取所述参考静态图中的节点;
节点处理模块1603,用于在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接;
拓扑图生成模块1604,用于在所述参考静态图中的等量节点被读取并处理完毕的情况下,确定所述参考静态图中的输入节点、输出节点以及输入节点和输出节点间的中间节点构成的拓扑图,将其作为处理后的静态图;
模型确定模块1605,用于依据所述处理后的静态图,获得处理后的神经网络模型。
本实施例公开的神经网络模型处理装置,其接收到的参考静态图中预先依据预设的重设节点属性规则和待处理节点配置了等量节点,则该装置能够在识别出节点为等量节点后,将重设节点属性规则作用于等量节点上,并在完成处理后,断开待处理节点的连接,使得处理后的等量节点替代待处理节点留在静态图中,以得到满足处理需求的处理结果。由于等量节点中的配置信息能够指示处理的规则和待处理节点,所以该装置能够直接快速确定待处理节点并对等量节点和待处理节点进行处理,缩短了模型的开发周期,大大提升了模型的使用效果。
进一步的,本发明实施例还公开了一种参考静态图生成模块,用于根据待处理神经网络的静态图预先配置等量节点获得参考静态图,参考静态图生成模块的结构如图17所示,包括:
确定单元1701,用于确定与处理需求对应的重设节点属性规则,以及各重设节点属性规则对应的待处理节点;
代码生成单元1702,用于生成与重设节点属性规则对应的待处理节点的等量节点代码;
代码添加单元1703,用于依据预设添加规则,在待处理神经网络原始代码中添加等量节点代码,作为参考代码;
代码编译单元1704,用于编译参考代码,得到静态图,将其作为参考静态图。
本实施例中的参考静态图生成模块可以作为图16所示神经网络模型处理装置的一部分,与图16所示部件配合工作。也可以独立设置于其他处理器,作为一个独立的主体与图16所示神经网络模型处理装置配合使用。
本实施例公开的神经网络模型处理装置及参考静态图生成模块的具体工作流程可参考图2-15中所示实施例,在此不再赘述。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现神经网络模型处理方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行神经网络模型处理方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (12)

1.一种神经网络模型处理方法,其特征在于,包括:
获取待处理神经网络模型的参考静态图,所述参考静态图根据所述待处理神经网络的静态图预先配置等量节点获得,所述等量节点依据预设的重设节点属性规则和待处理节点配置,所述等量节点与所述待处理节点相连,且连接顺序依据所述重设节点属性规则确定;
依据预设顺序依次读取所述参考静态图中的节点;
在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接;
在所述参考静态图中的等量节点被读取并处理完毕的情况下,确定所述参考静态图中的输入节点、输出节点以及输入节点和输出节点间的中间节点构成的拓扑图,将其作为处理后的静态图;
依据所述处理后的静态图,获得处理后的神经网络模型。
2.根据权利要求1所述的方法,其特征在于,所述重设节点属性规则包括:重新设定输入节点、重新设定输出节点和重新设定中间节点中的任意一种或多种的组合。
3.根据权利要求2所述的方法,其特征在于,所述依据所述重设节点属性规则设定所述等量节点的属性包括:
若所述重设节点属性规则为重新设定输入节点,则设定所述等量节点的属性为输入节点;
若所述重设节点属性规则为重新设定输出节点,则设定所述等量节点的属性为输出节点;
若所述重设节点属性规则为重新设定中间节点,则设定所述等量节点的属性为中间节点。
4.根据权利要求3所述的方法,其特征在于,所述依据所述重设节点属性规则确定等量节点与所述待处理节点连接顺序的过程包括:
若重设节点属性规则是重新设定输入节点,则等量节点代码编译后的等量输入节点是所述待处理节点的后置节点;
若重设节点属性规则是重新设定输出节点,则等量节点代码编译后的等量输出节点是所述待处理节点的前置节点;
若重设节点属性规则是重新设定中间节点,则等量节点代码编译后的等量中间节点是所述待处理节点的后置节点。
5.根据权利要求1所述的方法,其特征在于,所述在所述待处理神经网络的静态图中,预先配置等量节点后得到参考静态图的过程包括:
确定与处理需求对应的重设节点属性规则,以及各重设节点属性规则对应的待处理节点;
生成与所述重设节点属性规则对应的待处理节点的等量节点代码;
依据预设添加规则,在所述待处理神经网络原始代码中添加所述等量节点代码,作为参考代码;
编译所述参考代码,得到静态图,将其作为参考静态图。
6.根据权利要求5所述的方法,其特征在于,所述等量节点代码包括:函数名称和函数输入,其中,所述函数名称用于表征所述重设节点属性规则,所述函数输入包括所述待处理节点。
7.根据权利要求6所述的方法,其特征在于,在所述重设节点属性规则是重新设定中间节点的情况下,所述等量中间节点代码包括:等量前置替换裁剪代码和等量后置替换裁剪代码,其中,所述等量前置替换裁剪代码的函数名称用于表征重设节点属性规则,函数输入包括所述待处理节点、所述待处理节点的前置节点以及第一等量节点标识;所述等量后置替换裁剪代码的函数名称用于表征重设节点属性规则,函数输入包括所述待处理节点、所述待处理节点的后置节点及第二等量节点标识,所述第一等量节点标识与所述第二等量节点标识相同。
8.根据权利要求2所述的方法,其特征在于,若重设节点属性规则是重新设定中间节点的情况下,依据所述重设节点属性规则确定等量节点与所述待处理节点连接顺序包括,所述等量节点包括:等量前置替换裁剪代码对应的等量前置替换节点,和等量后置替换裁剪代码对应的等量后置替换裁剪代码,所述待处理节点位于所述等量前置替换代码节点和所述等量后置替换裁剪代码之间。
9.根据权利要求8所述的方法,其特征在于,所述在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接的过程包括:
在读取到的节点为等量前置替换裁剪节点的情况下,确定与其对应的等量后置替换裁剪节点;
合并所述等量前置替换裁剪节点和所述等量后置替换裁剪节点,并设定合并后的节点为等量中间节点;
断开所述等量中间节点和所述待处理节点的连接。
10.一种神经网络模型处理装置,其特征在于,包括:
参考静态图获取模块,用于获取待处理神经网络模型的参考静态图,所述参考静态图根据所述待处理神经网络的静态图预先配置等量节点获得,所述等量节点依据预设的重设节点属性规则和待处理节点配置,所述等量节点与所述待处理节点相连,且连接顺序依据所述重设节点属性规则确定;
节点读取模块,用于依据预设顺序依次读取所述参考静态图中的节点;
节点处理模块,用于在读取到的节点为所述等量节点的情况下,依据所述重设节点属性规则设定所述等量节点的属性,并断开与所述待处理节点的连接;
拓扑图生成模块,用于在所述参考静态图中的等量节点被读取并处理完毕的情况下,确定所述参考静态图中的输入节点、输出节点以及输入节点和输出节点间的中间节点构成的拓扑图,将其作为处理后的静态图;
模型确定模块,用于依据所述处理后的静态图,获得处理后的神经网络模型。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,
其中,在所述程序运行时控制所述存储介质所在的设备执行如权利要求1-9中任一项所述的神经网络模型处理方法。
12.一种处理器,其特征在于,所述处理器用于运行程序,
其中,所述程序运行时执行如权利要求1-9中任一项所述的神经网络模型处理方法。
CN202111675878.1A 2021-12-31 2021-12-31 一种神经网络模型的处理方法及相关设备 Pending CN114298305A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111675878.1A CN114298305A (zh) 2021-12-31 2021-12-31 一种神经网络模型的处理方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111675878.1A CN114298305A (zh) 2021-12-31 2021-12-31 一种神经网络模型的处理方法及相关设备

Publications (1)

Publication Number Publication Date
CN114298305A true CN114298305A (zh) 2022-04-08

Family

ID=80975995

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111675878.1A Pending CN114298305A (zh) 2021-12-31 2021-12-31 一种神经网络模型的处理方法及相关设备

Country Status (1)

Country Link
CN (1) CN114298305A (zh)

Similar Documents

Publication Publication Date Title
CN112149399B (zh) 基于rpa及ai的表格信息抽取方法、装置、设备及介质
CN112036577B (zh) 基于数据形式的应用机器学习的方法、装置和电子设备
CN111435367B (zh) 知识图谱的构建方法、系统、设备及存储介质
US9390117B2 (en) Method of transforming sets of input strings into at least one pattern expression that is string expressing sets of input strings, method of extracting transformation pattern as approximate pattern expression, and computer and computer program for the methods
CN116362261A (zh) 应对数字化服务项目的用户会话信息解析方法及软件产品
CN115240048A (zh) 面向图像分类的深度学习的算子定位融合方法及装置
CN114157507A (zh) 采用大数据分析的云服务漏洞分析方法及人工智能系统
CN115291854A (zh) 代码补全方法、装置及设备
CN111767217A (zh) Js单元测试案例生成方法及装置
CN113918126B (zh) 一种基于图算法的ai建模流程编排方法和系统
CN113127697B (zh) 图布局优化方法和系统、电子设备及可读存储介质
CN114612702A (zh) 基于深度学习的图像数据标注系统及其方法
CN117369521A (zh) 用于无人机决策的行为树模型路径生成方法、装置及设备
CN111324718B (zh) 一种对话流测试方法、装置、电子设备及可读存储介质
CN116629330A (zh) 一种算子检测方法、装置以及计算机设备
JP2019101889A (ja) テスト実行装置及びプログラム
CN114298305A (zh) 一种神经网络模型的处理方法及相关设备
Alalfi et al. Variability identification and representation for automotive Simulink models
CN111176624B (zh) 一种流式计算指标的生成方法及装置
CN114449063A (zh) 一种报文处理方法、装置及设备
CN114296726A (zh) 一种代码生成方法、装置、计算机设备和存储介质
CN114676705A (zh) 一种对话关系处理方法、计算机及可读存储介质
CN112989066A (zh) 数据处理方法和装置、电子设备、计算机可读介质
CN115145965B (zh) 数据流的生成方法、电子设备及计算机可读存储介质
CN111966895A (zh) 一种基于Watson对话服务的电影问答系统构建方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination