针对卷积神经网络的推理方法、系统及计算机设备与流程

文档序号:30450131发布日期:2022-06-18 01:42阅读:142来源:国知局
针对卷积神经网络的推理方法、系统及计算机设备与流程

1.本技术涉及云计算相关技术领域,具体而言,涉及一种针对卷积神经网络的推理方法、系统及计算机设备。


背景技术:

2.随着深度学习算法的快速发展及应用,大量面向实际应用的卷积神经网络被训练出来以提升机器效率或支持新特性、新玩法。例如,在一种典型的实际应用中,针对计算量大、推理时间长的卷积神经网络会被部署在云端服务器,而针对计算量小、推理时间短的卷积神经网络则可以部署在客户端(如用户pc、手机等)。
3.为了能够让更多的卷积神经网络得以部署在客户端,或者减轻云端服务器的负载以降低云端服务器的成本,如何有效提升卷积神经网络的推理效率,减小单次推理计算所需时间,降低设备的cpu、内存占用率,是本领域技术人员一直以来致力于研究的重要课题。


技术实现要素:

4.基于以上内容,第一方面,本技术实施例提供一种针对卷积神经网络的推理方法,所述方法包括:
5.将训练完成的卷积神经网络模型转换为计算图,其中,所述计算图包括通过有向边连接的多个节点算子,所述节点算子包括卷积层算子以及操作符算子;
6.对所述计算图进行优化,并将优化后的计算图按照预设的格式进行保存,其中,对所述计算图进行优化包括:遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层算子中,并将融入了操作符算子的卷积层算子设置对应的算子融入标志位;
7.调用所述优化后的计算图执行卷积神经网络推理。
8.根据第一方面的一种可能的实现方式,调用所述优化后的计算图执行卷积神经网络推理,包括:
9.依次调用所述优化后的计算图中的各节点算子;
10.在当前调用的节点算子为卷积层算子时,检测该卷积层算子是否携带有所述算子融入标志位;
11.在所述卷积层算子携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,然后基于该卷积结果执行所述算子融入标志位所对应的操作符计算,并将操作符计算的结果存储到输出张量,作为下一个节点算子的输入张量;
12.在所述卷积层算子未携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,将卷积结果存储到输出张量,作为下一个节点算子的输入张量。
13.根据第一方面的一种可能的实现方式,遍历所述计算图中的各节点算子,将满足
设定融入条件的操作符算子融入到对应的卷积层中,并将融入了操作符算子的卷积层设置对应的算子融入标志位,包括:
14.依次遍历所述计算图中的每个卷积层算子,获取所述卷积层算子的下一个节点算子;
15.判断所述下一个节点算子是否满足算子融入条件,若满足算子融入条件,则将所述下一个节点算子融入到当前遍历的卷积层算子中,并为所述当前遍历的卷积层算子设置所述下一个节点算子对应的算子融入标志位;
16.在所述计算图中删除满足算子融入条件的所述下一个节点算子。
17.根据第一方面的一种可能的实现方式,判断所述下一个节点算子是否满足算子融入条件,包括:
18.判断所述下一个节点算子是否为一元操作符算子或二元操作符算子;
19.若所述下一个节点算子为一元操作符算子或二元操作符算子,则判断所述下一个节点算子满足算子融入条件,否则,则判断所述下一个节点算子不满足算子融入条件。
20.根据第一方面的一种可能的实现方式,遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层中,并将融入了操作符算子的卷积层设置对应的算子融入标志位,包括:
21.依次遍历所述计算图中的每个操作符算子,获取所述操作符算子的上一个节点算子;
22.判断所述上一个节点算子是否为卷积层算子;
23.当所述上一个节点算子为卷积层算子时,判断所述卷积层算子是否满足算子融入条件,若满足算子融入条件,则将所述操作符算子融入到所述卷积层算子中,并为所述卷积层算子设置所述操作符算子对应的算子融入标志位;
24.在所述计算图中删除所述操作符算子。
25.根据第一方面的一种可能的实现方式,当所述上一个节点算子为卷积层算子时,判断所述卷积层算子是否满足算子融入条件,包括:
26.判断所述卷积层算子是否携带有算子融入标志位;
27.若携带有算子融入标志位,则判断所述卷积层算子不满足算子融入条件;否则,若未携带有算子融入标志位,则判断所述卷积层算子满足算子融入条件。
28.根据第一方面的一种可能的实现方式,当所述上一个节点算子为卷积层算子时,判断所述卷积层算子是否满足算子融入条件,包括:
29.判断所述卷积层算子是否携带有算子融入标志位;
30.当所述卷积层算子携带有算子融入标志位时,则进一步判断所述算子融入标志位是否为所述操作符算子对应的算子融入标志位;若所述算子融入标志位为所述操作符算子对应的算子融入标志位,则判断所述卷积层算子不满足算子融入条件;若所述算子融入标志位不是所述操作符算子对应的算子融入标志位,则判断卷积层算子满足算子融入条件;
31.当所述卷积层算子未携带有算子融入标志位时,则判定所述卷积层算子满足算子融入条件。
32.第二方面,本技术实施例还提供一种针对卷积神经网络的推理系统,应用于计算机设备,所述推理系统包括:
33.转换模块,用于将训练完成的卷积神经网络模型转换为计算图,其中,所述计算图包括通过有向边连接的多个节点算子,所述节点算子包括卷积层算子以及操作符算子;
34.图优化模块,用于对所述计算图进行优化,并将优化后的计算图按照预设的格式进行保存;其中,对所述计算图进行优化包括:遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层算子中,并将融入了操作符算子的卷积层算子设置对应的算子融入标志位;
35.卷积推理模块,用于调用所述优化后的计算图执行卷积神经网络推理。
36.根据第二方面的一种可能的实现方式,所述卷积推理模块,具体用于:
37.依次调用所述优化后的计算图中各节点算子;
38.在当前调用的节点算子为卷积层算子时,检测该卷积层算子是否携带有所述算子融入标志位;
39.在所述卷积层算子携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,然后基于该卷积结果执行所述算子融入标志位所对应的操作符计算,并将操作符计算的结果存储到输出张量,作为下一个节点算子的输入张量;
40.在所述卷积层算子未携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,将卷积结果存储到输出张量,作为下一个节点算子的输入张量。
41.第三方面,本技术实施例还提供一种计算机设备,包括机器可读存储介质以及一个或多个处理器,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被所述一个或多个处理器执行时,实现上述的针对卷积神经网络的推理方法。
42.基于本技术实施例的上述内容,相对于现有技术而言,本技术实施例提供的针对卷积神经网络的推理方法、系统及计算机设备,通过将卷积神经网络的计算图中的操作符算子融入卷积层算子,针对每个融入了操作符算子的结构而言,可以省去至少一次中间张量的访存操作,因而可以有效提升卷积神经网络的推理速度。尤其,针对类似于基于图像背景分割的卷积神经网络而言,由于其推理过程中保存结果的张量元素比一般卷积神经网络要大得多,针对这种卷积神经网络而言,采用本技术实施例的方案,其推理速度的提升效果显得尤为明显。
附图说明
43.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
44.图1是本技术实施例提供的一种针对卷积神经网络的推理方法的流程示意图。
45.图2是图1中步骤s200的实现流程示意图之一。
46.图3是图1中步骤s200的实现流程示意图之二。
47.图4是图1中步骤s300的实现流程示意图。
48.图5是本技术实施例提供的一种卷积神经网络的优化前的计算图的局部结构示意
图。
49.图6是本技术实施例提供的对图5所示的计算图进行局部优化后的示意图。
50.图7是本技术实施例提供的推理系统的示意图。
51.图8是本技术实施例提供的用于实现上述针对卷积神经网络的推理方法的计算机设备的示意图。
具体实施方式
52.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
53.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
54.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
55.在本技术的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
56.在本技术的描述中,还需要说明的是,除非另有明确的规定和限定,术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本技术中的具体含义。
57.基于前述背景技术中所描述的问题,发明人对常见的卷积神经网络进行了研究和分析,以基于图像背景分割的卷积神经网络模型为例,该网络模型被大量部署于云端服务器和用户客户端上。一方面,而这种模型一般都会大量借鉴deeplab系列(经典的背景分割卷积神经网络)的设计思路,其具有大量重复的相似结构,而针对这些相似结构进行优化以提升卷积神经网络的推理效率,减小单次推理计算所需时间,降低设备的cpu、内存占用率是可行的。有鉴于此,本技术实施例创新性地提供一种针对卷积神经网络的推理方法、系统及计算机设备,下面将结合附图对本实施例的技术方案进行示例性的说明。
58.在对本技术实施例提供的相关技术方案进行详细介绍之前,为了更清楚地理解本技术实施例的相关技术方案,首先对本技术实施例涉及的有关技术术语进行说明。
59.一元操作符:人工神经网络对数据张量的一种操作,输入、输出数据均只有一个张量,进行的操作包括,如对输入张量的每个元素取绝对值等。
60.二元操作符:人工神经网络对数据张量的一种操作,输入数据包括两个张量,输出数据包括一个张量,进行的操作包括,如对两个输入张量的对应元素进行相加、相乘等。
61.批标准化(batch normalization,bn):是一种用于提升卷积神经网络训练稳定性的技术。
62.下面将结合附图对本技术实施例的实施方案进行示例性的介绍。
63.如图1所示,是本技术实施例提供的一种针对卷积神经网络的推理方法的流程示意图,本实施例中,所述针对卷积神经网络的推理方法可以由计算机设备执行并实现。应当理解,本实施例提供的针对卷积神经网络的推理方法所包含的其中部分步骤的顺序在实际实施时可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除,本实施例对此不进行具体限定。
64.下面结合图1对本实施例的针对卷积神经网络的推理方法的各个步骤通过示例的方式进行详细介绍,详细地,如图1所示,所述方法可以包括下述的步骤s100和步骤s300所述的相关内容。
65.步骤s100,将训练完成的卷积神经网络模型转换为计算图,其中,所述计算图包括通过有向边连接的多个节点算子,所述节点算子包括卷积层算子以及操作符算子。
66.其中,在本实施例的一种可能的实施方式中,所述训练完成的卷积神经网络模型可以是任意一种待优化的网络模型。作为一种示例,所述卷积神经网络模型可以是一种经过训练完成模型指标优化的用于进行图像背景分割的卷积神经网络模型。所述卷积神经网络模型可以被部署于云端服务器或用户客户端,但不限于此。
67.例如,所述卷积神经网络模型可以是由深度学习训练框架tensorflow训练而得到。考虑到卷积神经网络无论部署于云端服务器还是部署于用户客户端,训练框架生成的模型文件都不能直接使用,需要先转换为推理框架可处理的模型文件。因此,在本实施例中,步骤s100可以读取tensorflow生成的模型文件,整理为节点相互连接的计算图的形式,便于后续进行计算图优化。
68.步骤s200,对所述计算图进行优化,并将优化后的计算图按照预设的格式进行保存。其中,对所述计算图进行优化包括:遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层算子中,并将融入了操作符算子的卷积层算子设置对应的算子融入标志位。
69.步骤s300,调用所述优化后的计算图执行卷积神经网络推理。
70.可选地,在其他实施例中,针对上述步骤s200,对所述计算图进行优化还可以包括操作符替换(operator replace)、操作符融合(operator fuse)、数据排布调整(layout adjust)等步骤。操作符替换可以是把计算图中的算子替换为推理框架支持的算子,数据排布调整可以是插入算子到计算图中以调整计算图中数据张量的数据排列方式。操作符融合可以包括,但不限于,批标准化融入卷积层、常见激活函数融入卷积层,以及本实施例中创新性的提出的一元操作符融入卷积层、二元操作符融入卷积层。其中,所述二元操作符的输入可以是单一常数。
71.作为一种可能实现方式,如图2所示,在步骤s200中,遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层中,并将融入了操作符算子的卷积层设置对应的算子融入标志位,可以包括下述s211-s214的步骤,具体说明如下。
72.步骤s211,依次遍历所述计算图中的每个卷积层算子,获取所述卷积层算子的下一个节点算子。
73.步骤s212,判断所述下一个节点算子是否满足算子融入条件,若满足算子融入条件,则执行步骤s213,若不满足融入条件,则回到步骤s211遍历下一个卷积层算子。
74.示例性地,步骤s212中,可判断所述下一个节点算子是否为一元操作符算子或二元操作符算子;若所述下一个节点算子为一元操作符算子或二元操作符算子,则判断所述下一个节点算子满足算子融入条件,否则,则判断所述下一个节点算子不满足算子融入条件。
75.步骤s213,将所述下一个节点算子融入到当前遍历的卷积层算子中,并为所述当前遍历的卷积层算子设置所述下一个节点算子对应的算子融入标志位。例如,若所述下一个节点算子为一元操作符,则为所述当前遍历的卷积层算子设置所述一元操作符对应的第一融入标志位(例如,01);若所述下一个节点算子为二元操作符,则为所述当前遍历的卷积层算子设置所述二元操作符对应的第二融入标志位(例如,11)。
76.步骤s214,在所述计算图中删除满足算子融入条件的所述下一个节点算子。
77.如此,在算子融入后,可以将融入后的所述下一个节点算子从所述计算图中删除,实现对所述计算图的优化,相应地,删除后的节点算子的下一个节点算子则通过有向边与融入后的卷积层算子进行连接。
78.作为另一种可能的示例,如图3所示,在步骤s200中,遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层中,并将融入了操作符算子的卷积层设置对应的算子融入标志位,可以包括下述s221-s224的步骤。与图2的方法相类似,图3是通过遍历可能需要融合的操作符算子的方式实现算子融合,而图2的方式是遍历卷积层算子的方式实现算子融合,具体说明如下。
79.步骤s221,依次遍历所述计算图中的每个操作符算子,并获取所述操作符算子的上一个节点算子。
80.步骤s222,判断所述上一个节点算子是否为卷积层算子,若为卷积层算子,则进入步骤s223,否则返回步骤s221对下一个操作符算子进行遍历。
81.步骤s223,当所述上一个节点算子为卷积层算子时,判断所述卷积层算子是否满足算子融入条件,若满足算子融入条件,则进入步骤s224,若不满足算子融入条件,则返回步骤s221对下一个操作符算子进行遍历。
82.例如,在一种可能的实现方式中,可首先判断所述卷积层算子是否携带有算子融入标志位;若携带有算子融入标志位,则判断所述卷积层算子不满足算子融入条件;否则,若未携带有算子融入标志位,则判断所述卷积层算子满足算子融入条件。通过这种方式,可以使得卷积层算子只能进行一次操作符算子的融入,实现两个以上的操作符算子之间的融入互斥性。
83.又例如,在另一种可能的实现方式中,也可以是同一个卷积层算子对于不同类型的操作符算子的融入兼容性。基于此,可首先判断所述卷积层算子是否携带有算子融入标志位;当所述卷积层算子携带有算子融入标志位时,则进一步判断所述算子融入标志位是否为所述操作符算子对应的算子融入标志位;若所述算子融入标志位为所述操作符算子对应的算子融入标志位,则判断所述卷积层算子不满足算子融入条件;若所述算子融入标志位不是所述操作符算子对应的算子融入标志位,则判断卷积层算子满足算子融入条件;而当所述卷积层算子未携带有算子融入标志位时,则直接判定所述卷积层算子满足算子融入条件。举例而言,当所述操作符算子(当前遍历的操作符算子)为一元操作符时,在其上一个卷积层算子携带有算子融入标志位时,可以判断该算子融入标志位是否为第一融入标志
位,若为第一融入标志位,则判断所述卷积层算子不满足算子融入条件(避免同时融入两个相同的一元操作符算子),若为第二融入标志位,则可判断所述卷积层算子满足算子融入条件,进而实现同一个卷积层算子对两个不同类型的操作符算子的融入兼容性。这种方式设置的卷积层算子包括的算子融入标志位可以包括按照融入顺序依次设置的两个不同的算子融入标志位(例如,0111)。
84.步骤s224,将所述操作符算子融入到所述卷积层算子中,并为所述卷积层算子设置所述操作符算子对应的算子融入标志位。
85.例如,若所述下一个节点算子为一元操作符,则为所述当前遍历的卷积层算子设置所述一元操作符对应的第一融入标志位(例如,01);若所述下一个节点算子为二元操作符,则为所述当前遍历的卷积层算子设置所述二元操作符对应的第二融入标志位(例如,11)。
86.步骤s225,在所述计算图中删除所述操作符算子。如此,在算子融入后,可以将融入后的所述下一个节点算子从所述计算图中删除,实现对所述计算图的优化,相应地,删除后的节点算子的下一个节点算子则通过有向边与融入后的卷积层算子进行连接。
87.其中,针对步骤s300,在本技术的一种可能的实现方式中,如图4所示,步骤s300可以包括下述的步骤s310-340的步骤,示例性说明如下。
88.s310,依次调用所述优化后的计算图中各节点算子。
89.其中,本实施例中,所述计算图中的各节点算子相互之间可以通过有向边(节点间的连线)进行连接,各节点算子的计算结果(数据张量)可以沿计算图的有向边依次进行传递,计算图最后一个节点算子输出的数据张量则可以作为所述卷积神经网络的输出。因此,本实施例中,可以基于所述计算图中的有向边依序对各个节点算子进行遍历。
90.s320,在当前调用的节点算子为卷积层算子时,检测该卷积层算子是否携带有算子融入标志位。
91.其中,本实施例中,在上述步骤s200将融入了操作符算子的卷积层算子设置对应的算子融入标志位时,可以根据不同的操作符算子添加不同的算子融入标志位。例如,针对融入了一元操作符算子的卷积层算子,可以为所述卷积层算子设置第一融入标志位;而针对融入了一元操作符算子的卷积层算子,可以为所述卷积层算子设置第二融入标志位。因此,在步骤s320中,可以通过检测第一融入标志位和第二融入标志位的方式检测所述卷积层算子是否携带有所述算子融入标志位。
92.s330,在所述卷积层算子携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,然后基于该卷积结果执行所述算子融入标志位所对应的操作符计算,并将操作符计算的结果存储到输出张量,作为下一个节点算子的输入张量。
93.例如,作为一种示例,当检测到所述卷积层算子携带有所述第一融入标志位时,可以由该卷积层算子先基于其输入张量(例如可以是上一个节点算子的输出张量,首个节点算子的输入张量可以是最原始的输入张量)进行卷积运算得到卷积结果,然后再基于该卷积结果执行一次一元操作符计算,然后将计算结果作为输出张量保存到内存中。
94.又例如,当检测到所述卷积层算子携带有所述第二融入标志位时,可以由该卷积层算子先基于其输入张量进行卷积运算得到卷积结果,然后再基于该卷积结果执行一次二
元操作符计算,然后将计算结果作为输出张量保存到内存中。
95.s340,在所述卷积层算子未携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,将卷积结果存储到输出张量,作为下一个节点算子的输入张量。
96.相对应地,当所述卷积层算子未携带有所述算子融入标志位时,可以直接执行未融入操作符算子的原始操作,直接进行卷积运算得到卷积结果。
97.综上所述,本技术实施例中,将满足融入条件的操作符算子融入到相应的卷积层算子中,可以有效减少中间张量的访存操作,能够有效提升推理速度。例如图5所示,是一种卷积神经网络对应的计算图中的部分操作算子的示例性结构示意图。上述结构可包括多个“卷积层算子+操作符算子”的重复结构,卷积层算子例如可以包括一般的卷积层算子(convolution)、深度卷积层算子(convolutiondepthwise)等,操作符算子例如可以包括一元操作符算子(unaryop)、二元操作符算子(binaryop)等。对于用于执行推理的硬件设备而言,上述的结构在实际推理中的计算流程是:读取输入张量与卷积层权重、计算卷积结果、存储卷积结果到中间张量、读取中间张量、操作符计算(一元操作符或二元操作符)、存储结果到输出张量。这种重复的“卷积层算子+操作符算子”的结构的一次计算过程需要至少两次中间张量的访存操作(保存与读取)。
98.在本实施例通过操作符算子融入卷积层算子之后,例如图6所示,是在图5的基础上,将部分操作符算子融入到相应的卷积层算子之后的示例性结构示意图。例如,将其中的一元操作符算子n2融入到卷积层算子n1中、将其中的二元操作符算子n4融入到卷积层算子n3中、将其中的一元操作符算子n6融入到卷积层算子n5中、将其中的一元操作符算子n8融入到深度卷积层算子n7中。如此,在执行了操作符算子融入之后,融入了相应的操作符算子的卷积层算子(例如卷积层算子n1)的计算流程则被简化为:读取输入张量与卷积层权重、计算卷积结果、操作符计算(一元操作符或二元操作符计算)、存储结果到输出张量。如此,可以省去至少一次中间张量的访存操作,因而可以有效提升卷积神经网络的推理速度。尤其,针对类似于基于图像背景分割的卷积神经网络而言,由于其推理过程中保存结果的张量元素比一般卷积神经网络要大得多,针对这种卷积神经网络而言,采用本技术实施例的方案,其推理速度的提升效果显得尤为明显。
99.如图7所示,是本技术实施例中提供的用于实现上述的针对卷积神经网络的推理方法的推理系统的示意图。本实施例中,所述推理系统可以是一个独立的设备,也可以是分别部署于云端和用户端的两个设备中的两部分的总和。作为一种示例,若所述卷积神经网络的计算量大、推理时间长,则所述推理系统可以是位于部署有所述卷积神经网络的云端服务器中的一个独立的部分。若所述卷积神经网络的计算量小、推理时间段,其可以包括分别位于云端服务器和用户客户端的两个部分。下面将结合图7对所述推理系统进行详细介绍。
100.在本实施例中,所述推理系统可以包括前端和后端。所述前端可以是用于执行卷积神经网络的计算图优化的部分,后端可以是基于优化后的计算图执行推理的部分。例如,在本实施例中,所述前端可以包括转换模块10和图优化模块20。所述后端可以包括卷积推理模块30。其中,所述前端和后端可以是同时部署于云端服务器的两个部分,也可以是分别部署于云端服务器和用户客户端的两个部分的总。当所述前端和后端可以是同时部署于云
端服务器时,模型转换、计算图优化以及卷积推理等都在云端服务器上执行,当所述前端和后端分别部署于云端服务器和用户客户端时,模型转换以及计算图优化可以在云端服务器执行,而卷积推理则在用户客户端执行。
101.其中,所述转换模块10,用于将训练完成的卷积神经网络模型转换为计算图,其中,所述计算图包括通过有向边连接的多个节点算子,所述节点算子包括卷积层算子以及操作符算子。其中,所述转换模块10例如可以包括tensorflow模型转换相关的算法及程序模块,用于实现上述功能,此外其也还可以包括其他类型的模型转换内容。
102.本实施例中,所述转换模块10可以用于执行上述的步骤s100,关于该转换模块10的更多的详细内容可以参照上述步骤s100的相关内容,此处不再赘述。
103.所述图优化模块20,用于对所述计算图进行优化,并将优化后的计算图按照预设的格式进行保存。其中,对所述计算图进行优化包括:遍历所述计算图中的各节点算子,将满足设定融入条件的操作符算子融入到对应的卷积层算子中,并将融入了操作符算子的卷积层算子设置对应的算子融入标志位。
104.其中,所述图优化模块20可以包括操作符替换、数据排布调整、操作符融合等部分相关的算法及程序模块,用于至少实现上述功能。
105.本实施例中,所述图优化模块20可以用于执行上述的步骤s200,关于该图优化模块20的更多的详细内容可以参照上述步骤s200的相关内容,此处不再赘述。
106.所述卷积推理模块30,用于调用所述优化后的计算图执行卷积神经网络推理。例如,所述卷积推理模块30可以依次调用所述优化后的计算图中的各节点算子,在当前调用的节点算子为卷积层算子时,检测该卷积层算子是否携带有所述算子融入标志位,在所述卷积层算子携带有所述算子融入标志位时,由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,然后基于该卷积结果执行所述算子融入标志位所对应的操作符计算,并将操作符计算的结果存储到输出张量,作为下一个节点算子的输入张量。而在所述卷积层算子未携带有所述算子融入标志位时,则由该卷积层算子根据其对应的输入张量进行卷积计算得到卷积结果,将卷积结果存储到输出张量,作为下一个节点算子的输入张量。
107.其中,所述卷积推理模块30可以通过所述后端中部署的cpu后端、opencl后端、metal后端、其他硬件后端等实现上述功能。其中,所述后端还可以包括推理框架其他算子对应的功能模块,此处不再一一阐述。
108.本实施例中,所述卷积推理模块30可以用于执行上述的步骤s300,关于该卷积推理模块30的更多的详细内容可以参照上述步骤s300的相关内容,此处不再赘述。
109.请参阅图8所示,图8是本技术实施例提供的用于实现上述针对卷积神经网络的推理方法的计算机设备200的示意图。详细地,所述计算机设备200可以包括一个或多个处理器110、机器可读存储介质120以及推理系统100。处理器110与机器可读存储介质120可经由系统总线通信连接。机器可读存储介质120存储有机器可执行指令,处理器110通过读取并执行机器可读存储介质120中机器可执行指令实现上文描述的针对卷积神经网络的推理方法。本实施例中,所述计算机设备200可以是用于执行所述推理系统的前端所包括的各功能模块的云端服务器,也可以是用于执行推理系统的后端所包括的各功能模块的用户客户端,或者也可以是同时用于执行所述推理系统的前端和后端所包括的各功能模块的云端服务器,又或者也可以是分别执行所述推理系统的前端和后端所包括的各功能模块的云端服
务器以及用户客户端的组合,本实施例对此不进行限制。
110.其中,所述机器可读存储介质120可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。其中,机器可读存储介质120用于存储程序,所述处理器110在接收到执行指令后,执行所述程序。
111.所述处理器110可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是,但不限于,通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)等。
112.综上所述,本技术实施例提供的针对卷积神经网络的推理方法、系统及计算机设备,通过将卷积神经网络的计算图中的操作符算子融入卷积层算子,针对每个融入了操作符算子的结构而言,可以省去至少一次中间张量的访存操作,因而可以有效提升卷积神经网络的推理速度。尤其,针对类似于基于图像背景分割的卷积神经网络而言,由于其推理过程中保存结果的张量元素比一般卷积神经网络要大得多,针对这种卷积神经网络而言,采用本技术实施例的方案,其推理速度的提升效果显得尤为明显。
113.在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
114.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
115.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
116.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
117.以上所述,仅为本技术的各种实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1