模型转换方法与装置与流程

文档序号:22798088发布日期:2020-11-04 03:53阅读:198来源:国知局
模型转换方法与装置与流程

本发明涉及计算机科学技术领域,具体涉及一种模型转换方法与装置。



背景技术:

人工智能在各行各业中有着广泛的应用前景。随着人工智能的飞速发展,各种深度学习框架层出不穷,目前主流的基于神经网络的深度学习框架包括tensorflow、pytorch、mxnet等。在算法开发到算法部署的过程中,往往需要用到不同的深度学习框架,例如使用pytorch进行算法开发和调试,而在部署阶段,由于硬件和部署软件的限制,可能需要转化成tensorflow模型进行适配。这就需要进行框架间的模型转换,以达成模型适配硬件的目标。

由于不同框架的数据排布方式可能不一致,这就导致框架间模型在转换的过程中,需要进行数据排布方式的转化。现有模型转换方法常通过对源数据进行转换操作,将源数据的数据排布格式转换为目标数据排布格式,以实现框架间的模型转换。然而,新增的转换操作增加了运算量,降低了模型转换的速度。



技术实现要素:

本发明实施例提供一种模型转换方法与装置,用以解决现有模型转换方法运算量大,速度慢的问题。

第一方面,本发明实施例提供一种模型转换方法,包括:

从源神经网络模型的数据导出接口获取待处理数据并确定待处理数据的数据排布格式;

根据待处理数据的数据排布格式对目标神经网络模型的模型算子进行数据排布格式转换;

采用转换后的模型算子对待处理数据进行处理。

一种实施例中,数据排布格式为nchw、nhwc或者chwn。

一种实施例中,采用转换后的模型算子对待处理数据进行处理,包括:

对待处理数据与转换后的模型算子执行通用矩阵乘法运算gemm。

一种实施例中,从源神经网络模型的数据导出接口获取待处理数据,包括:

从源神经网络模型的输入端、输出端、隐藏层的入端或者隐藏层的出端获取待处理的张量数据。

第二方面,本发明实施例提供一种模型转换装置,包括:

预处理模块,用于从源神经网络模型的数据导出接口获取待处理数据并确定待处理数据的数据排布格式;

转换模块,用于根据待处理数据的数据排布格式对目标神经网络模型的模型算子进行数据排布格式转换;

处理模块,用于采用转换后的模型算子对待处理数据进行处理。

一种实施例中,数据排布格式为nchw、nhwc或者chwn。

一种实施例中,处理模块用于对待处理数据与转换后的模型算子执行通用矩阵乘法运算gemm。

一种实施例中,预处理模块用于从源神经网络模型的输入端、输出端、隐藏层的入端或者隐藏层的出端获取待处理的张量数据。

第三方面,本发明实施例提供一种模型转换设备,包括:

至少一个处理器和存储器;

存储器存储计算机执行指令;

至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如第一方面任一项所述的模型转换方法。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面任一项所述的模型转换方法。

本发明实施例提供的模型转换方法与装置,包括:从源神经网络模型的数据导出接口获取待处理数据并确定所述待处理数据的数据排布格式;根据所述待处理数据的数据排布格式对目标神经网络模型的模型算子进行数据排布格式转换;采用转换后的模型算子对所述待处理数据进行处理。通过对目标神经网络模型的模型算子进行数据排布格式转换,只需执行一次转换操作即可,减少了运算量,提高了模型转换的速度。

附图说明

图1为一实施例提供的数据排布格式的示意图;

图2为本发明提供的模型转换方法一实施例的流程图;

图3为本发明一实施例提供的模型算子对待处理数据进行处理的示意图;

图4为本发明提供的模型转换装置一实施例的结构示意图;

图5为本发明提供的模型转换设备一实施例的结构示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。

本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。

图1为一实施例提供的数据排布格式的示意图。如图1所示,对于相同的数据,采用不同的数据排布格式,其在内存中的数据是不一致的。其中,n代表数量,c代表通道数,h代表高度,w代表宽度。以图像处理为例,n可以表示这批图像有几张,h可以表示图像在竖直方向有多少像素,w可以表示图像在水平方向有多少像素,c可以表示通道数(例如黑白图像的通道数c=1,而rgb彩色图像的通道数c=3)。

nchw其实代表的是[whcn],第一个元素是000,第二个元素是沿着w方向的,即001,依次下去是002003;然后沿着h方向,即004005006007……;到019后,继续沿着c方向,轮到了020,之后021022……;直到319,然后再沿着n方向。其中,[a:0]用于指示nchw格式下的第一维度,[a:1]用于指示nchw格式下的第二维度,[a:2]用于指示nchw格式下的第三维度,[a:3]用于指示nchw格式下的第四维度。

nhwc其实代表的是[cwhn],第一个元素是000,第二个元素是沿着c方向的,即020,依次下去是040060……;直到300,然后沿着w方向,即001021041061……;到303后,沿着h方向,即004024……;直到319,然后再沿着n方向。其中,[b:0]用于指示nhwc格式下的第一维度,[b:1]用于指示nhwc格式下的第二维度,[b:2]用于指示nhwc格式下的第三维度,[b:3]用于指示nhwc格式下的第四维度。

chwn格式的话依次类推,此处不再赘述。

基于神经网络的深度学习,如深度卷积神经网络已经成为最为广泛的网络架构,在图像及语音等领域有着广泛的应用。深度卷积神经网络的核心算法是卷积计算,目前主流的实现方式是将卷积展开,将卷积计算转变为通用矩阵乘计算(generalmatrixmultiplication,简称:gemm)。gemm要求参与计算的数据采用相同的数据排布格式。而在模型转换的过程中,源神经网络模型与目标神经网络模型可能存在数据排布格式不相同的情况。如tensorflow的默认数据排布格式是nhwc,而onnx的默认数据排布格式是nchw,那么在从tensorflow转换到onnx,或者在从onnx转换到tensorflow的过程中,由于数据排布格式不相同,导致onnx和tensorflow数据无法匹配,若gemm的参数不变,那么运算的结果就会出现偏差,造成推理错误。

为了避免模型转换过程中由于数据排布格式导致的错误情况,现有模型转换方法通过增加转换算子,将tensorflow的nhwc数据强制转换为onnx的nchw数据,或者,将onnx的nchw数据强制转换为tensorflow的nhwc数据。然而申请人在实践中发现,通过增加转换算子对数据进行格式转换,增加了运算量,尤其在数据量较大时,如n的取值较大时,将极大地降低模型转换的速度。

因此,为了减少运算量,提高模型转换的速度,本申请通过对目标神经网络模型的模型算子进行数据排布格式转换,而非对源神经网络模型的数据进行数据排布格式转换,这就使得在模型转换过程中,无论需要处理的数据量有多大,都只需执行一次转换操作即可,可以极大地减少运算量,提高模型转换的速度。

图2为本发明提供的模型转换方法一实施例的流程图。如图2所示,本实施例提供的模型转换方法可以包括:

s201、从源神经网络模型的数据导出接口获取待处理数据并确定待处理数据的数据排布格式。

本实施例中的待处理数据可以根据模型转换的需要,从源神经网络模型的输入端、输出端、隐藏层的入端或者隐藏层的出端等数据导出接口获取。待处理数据的数据排布格式包括但不限于nchw、nhwc或者chwn。

s202、根据待处理数据的数据排布格式对目标神经网络模型的模型算子进行数据排布格式转换。

本实施例中在确定待处理数据的数据排布格式之后,则将目标神经网络模型的模型算子的数据排布格式转换为与待处理数据的数据排布格式相同的格式。例如若待处理数据的数据排布格式为nhwc,目标神经网络模型的模型算子的数据排布格式为nchw,则将目标神经网络模型的模型算子由nchw转换为nhwc。

s203、采用转换后的模型算子对待处理数据进行处理。

在待处理数据与模型算子的数据排布格式一致之后,对所述待处理数据与所述转换后的模型算子执行通用矩阵乘法运算gemm。

为了提高模型转换的可靠性,本实施例提供的方法还可以进行一致性验证。例如可以以预设抽样频率从待处理数据中抽取用于验证的数据,对抽取出的数据进行数据排布格式转换,转换为与目标神经网络模型的模型算子相同的数据排布格式。采用目标神经网络模型的模型算子对格式转换后的验证数据进行处理,将处理结果与采用转换后的模型算子对待处理数据进行处理的结果进行比较,若相同,则表示模型转换准确无误;若不同,则需要进行校正。

下面通过一个具体的示例来详细说明,采用本发明实施例的方法如何在不增加算子的前提下,保证模型转换运算的准确性。请参考图3,其中,c表示输出数据,a表示待处理数据,b表示模型算子。m、n和k表示数据矩阵的维数。需要说明的是,图中各数据矩阵的大小仅做示意,并不以此为限。

c中各元素的数值c[m][n]+=a[m][k]*b[k][n],k=1,2,……,k。已知a在nchw和nhwc排布下k维度的数据会不一致,以c=512,h=3,w=3为例,则k=4608。本实施例通过对模型算子进行转换,从而保证输出数据c的准确性。假设在nchw排布下的a矩阵元素是a[m][k],b矩阵元素是b[k][n];在nhwc排布下的a矩阵元素是a[m][k*],b矩阵元素是b[k*][n]。已知nchw的输入c=512,h=3,w=3,可以得到nchw中的k=c*9+h*3+w,nhwc中的k*=h*3*512+w*512+c。只要保证nhwc中b矩阵中的k*元素和nchw中b矩阵中的k元素相等,就能保证输出数据c元素的一致性。即需要对b矩阵进行(512,3,3)到(3,3,512)的维度转化。实际操作过程中,可以先将b矩阵中的4608维拆成(512,3,3),然后再转化成(3,3,512),最后重新拼成4608维,这样nhwc排布下的b矩阵就生成了。在对待处理数据与转换后的模型算子执行通用矩阵乘法运算gemm时,由于模型算子是常量,本转换过程不会影响运算速度。通过上述步骤,在保证准确性的条件下,不增加转换算子也可以完成模型转换,相比较增加转换算子的处理方式而言,提高了模型转换的运算速度。

本实施例提供的模型转换方法,通过从源神经网络模型的数据导出接口获取待处理数据并确定所述待处理数据的数据排布格式,然后根据所述待处理数据的数据排布格式对目标神经网络模型的模型算子进行数据排布格式转换,最后采用转换后的模型算子对所述待处理数据进行处理,实现了模型转换。通过对目标神经网络模型的模型算子进行数据排布格式转换,只需执行一次转换操作即可,减少了运算量,提高了模型转换的速度。

图4为本发明提供的模型转换装置一实施例的结构示意图。如图4所示,本实施例提供的模型转换装置40可以包括:预处理模块401、转换模块402和处理模块403。

预处理模块401,用于从源神经网络模型的数据导出接口获取待处理数据并确定所述待处理数据的数据排布格式;

转换模块402,用于根据所述待处理数据的数据排布格式对目标神经网络模型的模型算子进行数据排布格式转换;

处理模块403,用于采用转换后的模型算子对所述待处理数据进行处理。

本实施例提供的模型转换装置可用于执行图2对应的方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

一种实施例中,数据排布格式为nchw、nhwc或者chwn。

一种实施例中,处理模块403具体用于对待处理数据与转换后的模型算子执行通用矩阵乘法运算gemm。

一种实施例中,预处理模块401具体用于从源神经网络模型的输入端、输出端、隐藏层的入端或者隐藏层的出端获取待处理的张量数据。

本发明实施例还提供一种模型转换设备,请参见图5所示,本发明实施例仅以图5为例进行说明,并不表示本发明仅限于此。图5为本发明提供的模型转换设备一实施例的结构示意图。如图5所示,本实施例提供的模型转换设备50可以包括:存储器501、处理器502和总线503。其中,总线503用于实现各元件之间的连接。

存储器501中存储有计算机程序,计算机程序被处理器502执行时可以实现上述任一方法实施例提供的模型转换方法的技术方案。

其中,存储器501和处理器502之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可以通过一条或者多条通信总线或信号线实现电性连接,如可以通过总线503连接。存储器501中存储有实现模型转换方法的计算机程序,包括至少一个可以软件或固件的形式存储于存储器501中的软件功能模块,处理器502通过运行存储在存储器501内的软件程序以及模块,从而执行各种功能应用以及数据处理。

存储器501可以是,但不限于,随机存取存储器(randomaccessmemory,简称:ram),只读存储器(readonlymemory,简称:rom),可编程只读存储器(programmableread-onlymemory,简称:prom),可擦除只读存储器(erasableprogrammableread-onlymemory,简称:eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,简称:eeprom)等。其中,存储器501用于存储程序,处理器502在接收到执行指令后,执行程序。进一步地,上述存储器501内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

处理器502可以是一种集成电路芯片,具有信号的处理能力。上述的处理器502可以是通用处理器,包括中央处理器(centralprocessingunit,简称:cpu)、网络处理器(networkprocessor,简称:np)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。可以理解,图5的结构仅为示意,还可以包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件和/或软件实现。

需要说明的是,本实施例提供的模型转换设备包括但不限于以下中的至少一个:用户侧设备、网络侧设备。用户侧设备包括但不限于计算机、智能手机、平板电脑、数字广播终端、消息收发设备、游戏控制台、个人数字助理等。网络侧设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机组成的一个超级虚拟计算机。

本文参照了各种示范实施例进行说明。然而,本领域的技术人员将认识到,在不脱离本文范围的情况下,可以对示范性实施例做出改变和修正。例如,各种操作步骤以及用于执行操作步骤的组件,可以根据特定的应用或考虑与系统的操作相关联的任何数量的成本函数以不同的方式实现(例如一个或多个步骤可以被删除、修改或结合到其他步骤中)。

另外,如本领域技术人员所理解的,本文的原理可以反映在计算机可读存储介质上的计算机程序产品中,该可读存储介质预装有计算机可读程序代码。任何有形的、非暂时性的计算机可读存储介质皆可被使用,包括磁存储设备(硬盘、软盘等)、光学存储设备(cd-rom、dvd、bluray盘等)、闪存和/或诸如此类。这些计算机程序指令可被加载到通用计算机、专用计算机或其他可编程数据处理设备上以形成机器,使得这些在计算机上或其他可编程数据处理装置上执行的指令可以生成实现指定的功能的装置。这些计算机程序指令也可以存储在计算机可读存储器中,该计算机可读存储器可以指示计算机或其他可编程数据处理设备以特定的方式运行,这样存储在计算机可读存储器中的指令就可以形成一件制造品,包括实现指定功能的实现装置。计算机程序指令也可以加载到计算机或其他可编程数据处理设备上,从而在计算机或其他可编程设备上执行一系列操作步骤以产生一个计算机实现的进程,使得在计算机或其他可编程设备上执行的指令可以提供用于实现指定功能的步骤。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1