CN112990421B - 优化深度学习网络的运行过程的方法、装置及存储介质 - Google Patents
优化深度学习网络的运行过程的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112990421B CN112990421B CN201911215315.7A CN201911215315A CN112990421B CN 112990421 B CN112990421 B CN 112990421B CN 201911215315 A CN201911215315 A CN 201911215315A CN 112990421 B CN112990421 B CN 112990421B
- Authority
- CN
- China
- Prior art keywords
- layer
- sub
- network
- layers
- determining
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开了一种优化深度学习网络的运行过程的方法、装置及存储介质,属于深度学习领域。在本申请中,确定深度学习网络中包括的多个计算层对应的多种运行顺序,然后确定每种运行顺序所需的内存开销,进而根据每种运行顺序所需的内存开销,确定多个计算层的最优运行顺序。由于多个计算层的最优运行顺序是通过不同的运行顺序所需的内存开销来进行确定的,因此,根据最优运行顺序来运行深度学习网络,可以有效地减少深度学习网络的内存开销,也即可以使内存优化的效果更加显著。
Description
技术领域
本申请涉及深度学习领域,特别涉及一种优化深度学习网络的运行过程的方法、装置及存储介质。
背景技术
随着深度学习技术的快速发展,基于深度学习技术构建的深度学习网络越来越庞大,在采用深度学习网络进行数据分析时所占用的内存也越来越大。基于此,目前常采用内存复用技术来减少深度学习网络运行过程中所占用的内存。其中,深度学习网络包括多个计算层,所谓采用内存复用技术是指:在按照每个计算层的编写顺序进行前向推理的过程中,任一计算层在进行运算时先从内存中读取该计算层的输入数据,根据输入数据进行运算,并输出数据,将输出的数据存入内存。若内存中的某些数据不再被位于该计算层之后的其他计算层所需要时,则可以将这部分数据所占用的内存进行释放,以便位于该计算层之后的其他计算层在进行运算时可以复用该部分内存。
然而,目前仅采用内存复用技术来降低深度学习网络的内存开销的幅度较为有限,也即内存优化的效果有限。因此,亟需提供一种更有效的方案,来使深度学习网络所占用的内存进一步降低,以提高内存优化效果。
发明内容
本申请实施例提供了一种优化深度学习网络的运行过程的方法、装置及存储介质,可以解决相关技术中深度学习网络的内存开销降低的幅度有限的问题。
所述技术方案如下:
一方面,提供了一种优化深度学习网络的运行过程的方法,所述方法包括:
根据深度学习网络包括的多个计算层中每个计算层的输入数据的来源,确定多种运行顺序,所述多种运行顺序中的每种运行顺序用于指示运行所述多个计算层的一种顺序;
确定所述多种运行顺序中每种运行顺序所需的内存开销;
根据所述多种运行顺序中每种运行顺序所需的内存开销,确定所述多个计算层的最优运行顺序。
可选地,所述根据深度学习网络包括的多个计算层中每个计算层的输入数据的来源,确定多种运行顺序,包括:
对所述深度学习网络进行拆分,得到多个子网络;
根据每个子网络包括的每个计算层的输入数据的来源,确定每个子网络对应的一种或多种运行顺序,所述一种或多种运行顺序中的每种运行顺序用于指示运行相应子网络包括的计算层的一种顺序;
将针对所述多个子网络确定得到的运行顺序,作为所述多种运行顺序。
可选地,所述对所述深度学习网络进行拆分,得到多个子网络,包括:
按照所述多个计算层的先后顺序,从所述多个计算层中确定一个或多个分支开始层和一个或多个分支结束层,每个分支开始层的输出数据为两个或两个以上的其他计算层的输入数据,每个分支结束层的输入数据来自两个或两个以上的其他计算层,或者,每个分支结束层后不存在其他计算层;
根据所述一个或多个分支开始层和所述一个或多个分支结束层,对所述深度学习网络进行拆分,得到所述多个子网络。
可选地,所述确定所述多种运行顺序中每种运行顺序所需的内存开销,包括:
确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销。
可选地,所述确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销,包括:
对于第一子网络的第一运行顺序,确定按照所述第一运行顺序运行所述第一子网络中的计算层时,每个计算层所需的内存开销,所述第一子网络是指所述多个子网络中的任一子网络,所述第一运行顺序是指所述第一子网络对应的一种或多种运行顺序中的任一运行顺序;
从每个计算层所需的内存开销中确定最大内存开销;
将所述最大内存开销作为所述第一运行顺序所需的内存开销。
可选地,所述根据所述多种运行顺序中每种运行顺序所需的内存开销,确定所述多个计算层的最优运行顺序,包括:
从每个子网络对应的一种或多种运行顺序中,确定所需的内存开销最小的运行顺序;
根据每个子网络对应的内存开销最小的运行顺序,确定所述多个计算层的最优运行顺序。
另一方面,提供了一种优化深度学习网络的运行过程的装置,所述装置包括:
第一确定模块,用于根据深度学习网络包括的多个计算层中每个计算层的输入数据的来源,确定多种运行顺序,所述多种运行顺序中的每种运行顺序用于指示运行所述多个计算层的一种顺序;
第二确定模块,用于确定所述多种运行顺序中每种运行顺序所需的内存开销;
第三确定模块,用于根据所述多种运行顺序中每种运行顺序所需的内存开销,确定所述多个计算层的最优运行顺序。
可选地,所述第一确定模块包括:
拆分单元,用于对所述深度学习网络进行拆分,得到多个子网络;
第一确定单元,用于根据每个子网络包括的每个计算层的输入数据的来源,确定每个子网络对应的一种或多种运行顺序,所述一种或多种运行顺序中的每种运行顺序用于指示运行相应子网络包括的计算层的一种顺序;
第二确定单元,用于将针对所述多个子网络确定得到的运行顺序,作为所述多种运行顺序。
可选地,所述拆分单元包括:
第一确定子单元,用于按照所述多个计算层的先后顺序,从所述多个计算层中确定一个或多个分支开始层和一个或多个分支结束层,每个分支开始层的输出数据为两个或两个以上的其他计算层的输入数据,每个分支结束层的输入数据来自两个或两个以上的其他计算层,或者,每个分支结束层后不存在其他计算层;
拆分子单元,用于根据所述一个或多个分支开始层和所述一个或多个分支结束层,对所述深度学习网络进行拆分,得到所述多个子网络。
可选地,所述第二确定模块包括:
第三确定单元,用于确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销。
可选地,所述第三确定单元包括:
第二确定子单元,用于对于第一子网络的第一运行顺序,确定按照所述第一运行顺序运行所述第一子网络中的计算层时,每个计算层所需的内存开销,所述第一子网络是指所述多个子网络中的任一子网络,所述第一运行顺序是指所述第一子网络对应的一种或多种运行顺序中的任一运行顺序;
第三确定子单元,用于从每个计算层所需的内存开销中确定最大内存开销;
第四确定子单元,用于将所述最大内存开销作为所述第一运行顺序所需的内存开销。
可选地,所述第三确定模块包括:
第四确定单元,用于从每个子网络对应的一种或多种运行顺序中,确定所需的内存开销最小的运行顺序;
第五确定单元,用于根据每个子网络对应的内存开销最小的运行顺序,确定所述多个计算层的最优运行顺序。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器、通信接口、存储器和通信总线;
其中,所述处理器、所述通信接口和所述存储器通过所述通信总线完成相互间的通信;
所述存储器用于存放计算机程序;
所述处理器用于执行所述存储器上所存放的程序,以实现前述提供优化深度学习网络的运行过程的方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现前述提供的优化深度学习网络的运行过程的方法的步骤。
另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的优化深度学习网络的运行过程的方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,确定深度学习网络中包括的多个计算层对应的多种运行顺序,然后确定每种运行顺序所需的内存开销,进而根据每种运行顺序所需的内存开销,确定多个计算层的最优运行顺序。由于多个计算层的最优运行顺序是通过不同的运行顺序所需的内存开销来进行确定的,因此,根据最优运行顺序来运行深度学习网络,可以有效地减少深度学习网络的内存开销,也即可以使内存优化的效果更加显著。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种优化深度学习网络的运行过程的方法的流程图;
图2是本申请实施例采用的一个深度学习网络的示意图;
图3是本申请实施例采用的另一个深度学习网络的示意图;
图4是对图3所示深度学习网络进行拆分得到的第一子网络的示意图;
图5是对图3所示深度学习网络进行拆分得到的第二子网络的示意图;
图6是对图3所示深度学习网络进行拆分得到的第三子网络的示意图;
图7是本申请实施例采用的又一个深度学习网络的示意图;
图8是本申请实施例提供的一种优化深度学习网络的运行过程的装置的结构示意图;
图9是本申请实施例提供的一种终端的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的深度学习网络优化方法进行详细的解释说明之前,先对本申请实施例涉及的应用场景予以介绍。
目前,基于深度学习技术构建的深度学习网络越来越庞大,在采用深度学习网络进行数据分析时所占用的内存也越来越大。由于实际的内存资源有限,因此,需要采取措施来减少深度学习网络在运行过程中所占用的内存开销。深度学习网络包括多个计算层,采用深度学习网络进行数据分析的过程是一个前向推理的过程,例如,卷积神经网络包括多个卷积层、多个池化层、多个激活层等计算层,采用训练好的卷积神经网络进行数据预测、分类或者识别等的过程即为前向推理的过程。在应用深度学习网络或者将深度学习网络部署到各个终端之前,可以结合前向推理的过程,并根据本申请提供的技术方案,来优化深度学习网络的运行过程,进而可以更有效的减少深度学习网络运行过程中的内存开销。
接下来对本申请实施例提供的优化深度学习网络的运行过程的方法进行介绍。
图1是本申请实施例提供的一种优化深度学习网络的运行过程的方法的流程图。如图1所示,该方法包括以下步骤:
步骤101:根据深度学习网络包括的多个计算层中每个计算层的输入数据的来源,确定多种运行顺序,多种运行顺序中的每种运行顺序用于指示运行多个计算层的一种顺序。
在本申请实施例中,深度学习网络可以包括多个计算层,每个计算层可以接收输入数据,对输入数据进行数据处理,并得到输出数据。其中,该输出数据可能作为其他一个计算层或者多个计算层的输入数据,也可能作为该深度学习网络的最终输出数据。另外,多个计算层可以包括卷积层、池化层等,本申请实施例对此不做限定。
需要说明的是,深度学习网络中某些计算层的输入数据的来源,可以是终端内的其他模块或者是当前终端之外的其他设备或者是用户输入。这些计算层可以称为该深度学习网络的输入层。例如,该输入数据可以是终端自身生成的数据、终端与其他设备交互获取的数据、用户输入终端的数据等。除输入层之外的其他计算层的输入数据的来源,可以是相应计算层的前一个计算层,也即当前计算层的输入数据是该计算层的前一个计算层的输出数据。
示例性地,卷积神经网络中可以包括多个卷积层等,其中,作为输入层的卷积层的输入数据可以是用户输入终端的数据,当该卷积层接收到该数据时,对该输入数据进行卷积处理,得到的该计算层的输出数据,该输出输入即可以作为该卷积层后的下一个卷积层的输入数据。
终端可以根据多个计算层中每个计算层的输入数据的来源,确定各个计算层之间的运行关系,进而可以确定多种运行顺序,也即确定运行深度学习网络中多个计算层的每一种可能的顺序。
其中,在第一种可能的实现方式中,终端可以根据每个计算层的输入数据的来源,确定多个计算层中的第一个计算层,以及多个计算层中除第一个计算层之外其余的每个计算层的上一个计算层和下一个计算层。其中,每个计算层的上一个计算层是指向该计算层输出数据的计算层,也即,该计算层的输入数据的来源,每个计算层的下一个计算层是指将该计算层的输出数据作为输入数据的计算层。在确定了每个计算层的上一个计算层和下一个计算层之后,根据各个计算层的先后顺序,即可以确定出多个计算层的执行顺序。其中,当某个计算层的输出数据可以同时作为两个或两个以上计算层的输入数据时,在该计算层之后可能执行两个或两个以上计算层中的任一计算层,这样,根据每种可能情况,即可以得到针对多个计算层的不同执行顺序。
示例性地,图2是本申请实施例采用的一个深度学习网络,参见图2,该深度学习网络包括计算层A-G,其中,计算层A的输出数据为计算层B的输入数据,也即,计算层B必须在计算层A之后运行。计算层B的输出数据可以同时作为计算层C和E的输入数据,也即,计算层C和计算层E都必须在计算层B之后运行。计算层C的输出数据为计算层D的输入数据,则计算层D必须在计算层C之后运行,计算层E的输出数据为计算层F的输入数据,因此,计算层F必须在计算层E之后运行,计算层D和F的输出数据为计算层G的输入数据,因此,计算层G必须在计算层D和计算层F之后运行。由于在计算层B之后,可以先运行计算层C,也可以先运行计算层E,也即存在两种可能的情况,而运行计算层C或E之后,可以串行的运行计算层C或E之后的其它层,也可以交叉运行C和E之后的其它层,基于此,可以确定得到以下6种可能的运行顺序,分别为:
1、A->B->C->D->E->F->G;2、A->B->C->E->D->F->G;
3、A->B->E->C->D->F->G;4、A->B->C->E->F->D->G;
5、A->B->E->F->C->D->G;6、A->B->E->C->F->D->G。
可选地,由于深度学习网络的规模可能较为庞大,包括的计算层的个数较多,且各个计算层之间的运行关系可能较为复杂,在此情况中,终端直接通过上述方式来确定多种运行顺序可能较为复杂且困难,因此,在另一种可能的实现方式中,终端可以是先对深度学习网络进行拆分,得到多个子网络,并可以根据每个子网络包括的每个计算层的输入数据的来源,确定每个子网络对应的一种或多种运行顺序,该一种或多种运行顺序中的每种运行顺序用于指示运行相应的子网络包括的计算层的一种顺序。然后可以将针对多个子网络确定得到的运行顺序,作为多种运行顺序。
可选地,在对深度学习网络进行拆分时,可以按照多个计算层的先后顺序,从多个计算层中确定一个或多个分支开始层和一个或多个分支结束层。其中,每个分支开始层的输出数据为两个或两个以上的其他计算层的输入数据,每个分支结束层的输入数据来自两个或两个以上的其他计算层,或者,每个分支结束层后不存在其他计算层。然后根据一个或多个分支开始层和一个或多个分支结束层,对深度学习网络进行拆分,得到多个子网络。
在本申请实施例中,一个构建好的深度学习网络中多个计算层的先后顺序可以预先获知。终端可以从第一个计算层开始,首先判断该计算层是否为分支开始层。如果该计算层的输出数据为两个或两个以上的其他计算层的输入数据,则可以将该计算层作为分支开始层,在这种情况下,终端可以从该分支开始层开始,沿任一分支按照先后顺序依次判断后续的各个计算层是否为分支结束层。如果后续的某个计算层的输入数据来自两个或两个以上其他计算层,或者,后续的某个计算层后不存在其他计算层,则可以确定该计算层为前述的确定的分支开始层对应分支结束层,此时,终端可以将从分支开始层到分支结束层的所有计算层作为一个子网络。之后,终端可以以该分支结束层作为第一个计算层,重复上述步骤。需要说明的是,一个分支开始层可以对应一个或多个分支结束层。其中,当该分支开始层对应的分支结束层是指输入数据来自其他多个计算层的计算层,则该分支开始层对应的分支结束层为一个,如果该分支开始层对应的分支结束层是指不存在后续计算层的计算层,则该分支开始层对应的分支结束层的个数与分支的个数相同。
如果第一个计算层不为分支开始层,也即,第一个计算层的输出数据为一个计算层的输入数据,则终端可以继续判断下一个计算层是否为分支开始层,直到判断出分支开始层时,将从第一个计算层到该分支开始层的所有计算层作为一个子网络,之后,则可以通过上述方法,从该分支开始层开始,向后确定该分支开始层对应的分支结束层,进而确定下一个子网络。当然,在一种可能的实现方式中,终端也可以将上述判断出的每一个不为分支开始层的计算层均作为一个单独的子网络。
通过上述方法,终端可以确定得到多个子网络。由前述描述可知,该多个子网络中有的子网络可以包括一个分支开始层和对应的分支结束层,对于这一类子网络,每个子网络可以包括多个分支。其中,每个分支中的计算层之间的先后顺序是串行顺序,也即,每个分支中的计算层的运行顺序是唯一确定的,多个分支之间的计算层之间的先后顺序可以是并行顺序,也即一个分支中的计算层可以与另一个分支中的计算层交叉运行。另外,多个子网络中的有的子网络中可能并没有分支,这种情况下,该子网络中的各个计算层的运行顺序将是唯一的,也即,该种子网络将对应一种运行顺序。
示例性地,图3为本申请实施例中采用的一个深度学习网络。参见图3,该深度学习网络包括计算层A-M,其中,计算层A为第一个计算层,且由于计算层A的输出数据为其他多个计算层的输入数据,因此可知,计算层A为分支开始层。从该计算层A开始,向下查找计算层A对应的分支结束层。由于计算层F的输入数据来自多个计算层,因此,可知计算层F为计算层A对应的分支结束层。此时,终端可以将从计算层A到计算层F的所有计算层作为一个子网络,从而得到图4所示的第一子网络。之后,终端可以将计算层F作为第一个计算层,继续采用前述方法进行判断,进而对后续多个计算层进行拆分,从而得到如图5和6所示的第二子网络和第三子网络。
可选地,在一种可能的情况中,终端也可以在确定出所有分支开始层和每个分支开始层对应的分支结束层之后,从第一个分支开始层开始,将从第一分支开始层到对应的分支结束层的所有计算层作为一个子网络,以此类推。
需要说明的是,在本申请实施例中,深度学习网络的规模可能庞大,对深度学习网络进行拆分时,可能会出现子网络中仍包含可以拆分的子网络,这种情况中,可以先将可以拆分的子网络作为一个独立的网络,根据前述方法将子网络进一步拆分,得到一个或多个子网络,对于该网络来说,可以将拆分得到的子网络作为一个整体,作为该网络中的一个计算层。
在确定多个子网络之后,可以根据每个子网络中各个计算层的输入数据的来源,来确定每个子网络对应的一种或多种运行顺序,也即确定每个子网络对应的每一种可能的运行顺序。
示例性地,对于图4中的第一子网络,该子网络有两条分支,分支1为A->B->C->F,分支2为A->D->E->F,这两条分支各自的运行顺序是确定的。在分支1中,计算层B必须在计算层A之后运行,计算层C必须在计算层B之后运行,计算层F必须在计算层C之后运行,在分支2中,计算层D必须在计算层A之后运行,计算层E必须在计算层D之后运行,计算层F必须在计算层E之后运行。但是分支1和分支2之间可以交叉运行,基于此,可以确定子网络Ⅰ对应有6种可能的运行顺序,分别为:
1、A->B->C->D->E->F;2、A->B->D->C->E->F;
3、A->B->D->E->C->F;4、A->D->E->B->C->F;
5、A->D->B->C->E->F;6、A->D->B->E->C->F。
同理,根据前述方法可以确定出图5所示的第二子网络对应的3种可能的运行顺序,分别为:F->G->H->I->J;F->G->I->H->J;F->I->G->H->J,图6所示的第三子网络对应的3种可能的运行顺序,分别为:J->K->L->M;J->K->M->L;J->M->K->L。
在确定每个子网络对应的每种运行顺序之后,可以根据每个子网络在深度学习网络中的先后顺序,确定深度学习网络中多个计算层的多种运行顺序。
示例性地,对于图3所示的深度学习网络进行拆分得到的图4所示的三个子网络来说,第二子网络必须在第一子网络之后运行,第三子网络必须在第二子网络之后运行。基于此,根据每个子网络对应的可能的运行顺序进行排列组合,图3所示的深度学习网络可以有6×3×3=54种运行顺序,例如,其中一种运行顺序可以为:A->B->D->E->C->F->I->G->H->J->K->M->L。
步骤102:确定多种运行顺序中每种运行顺序所需的内存开销。
在本申请实施例中,在确定出多种运行顺序之后,可以根据运行每个计算层时所需的内存开销,确定多种运行顺序中每种运行顺序所需的内存开销。
由前述描述可知,确定多种运行顺序的实现方式可以有多种,在第一种实现方式中,终端根据多个计算层之间的运行关系,直接确定多种运行顺序。在这种情况下,终端可以直接根据每个计算层的输入数据和输出数据所需的内存,以及各个计算层之间的运行关系,根据内存复用技术的原理,来确定多种运行顺序中每种运行顺序所需的内存开销。
示例性地,以图7所示的深度学习网络为例,参见表1,表1为该深度学习网络中各个计算层的输入数据和输出数据所占用的内存大小。其中,数据In为计算层A的输入数据,数据A为计算层A的输出数据,数据B为计算层B的输出数据,以此类推。以运行顺序为A->B->F->C->D->E->G->H为例进行说明,表2为按照该运行顺序运行该深度学习网络的每个计算层时,每个计算层所需的内存开销,参见表2,运行计算层A的过程中,需要占用内存的数据有数据In和数据A,所需的内存开销为20M,运行计算层B的过程中,需要占用内存的数据有数据A和数据B,所需的内存开销为110M,运行计算层F的过程中,需要占用内存的数据有数据B和数据F,所需的内存开销为110M,运行计算层C的过程中,由于数据F还需要在之后运行计算层G时使用,因此数据F占用的内存暂时不能被释放,因此需要占用内存的数据有数据B、数据C和数据F,所需的内存开销为120M。同理,可以确定运行计算层D、E、G、H的过程中,所需的内存开销分别为70M、70M、30M、30M。
表1
表2
运行顺序 | 所需占用内存的数据 | 所需的内存开销 |
计算层A | 数据In+数据A | 20M |
计算层B | 数据A+数据B | 110M |
计算层F | 数据B+数据F | 110M |
计算层C | 数据B+数据C+数据F | 120M |
计算层D | 数据C+数据D+数据F | 120M |
计算层E | 数据D+数据E+数据F | 70M |
计算层G | 数据E+数据F+数据G | 30M |
计算层H | 数据E+数据G+数据H | 30M |
可选地,在另一种实现方式中,如果终端确定的多种运行顺序是指针对多个子网络确定的多种运行顺序,则在本步骤中,终端可以确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销。
示例性地,以多个子网络中的任一子网络为例,为了方便描述,将该子网络称为第一子网络。终端可以确定按照第一运行顺序运行第一子网络中的每个计算层时,每个计算层所需的内存开销。其中,第一运行顺序是指第一子网络的一种或多种运行顺序中的任一运行顺序。然后从第一子网络中的每个计算层所需的内存开销中确定最大内存开销,将最大内存开销作为第一子网络对应的第一运行顺序所需的内存开销。
在本申请实施例中,对于第一子网络的第一运行顺序,终端可以参照前述第一种实现方式中的相关介绍,根据每个计算层的输入数据和输出数据所需的内存,以及各个计算层之间的运行关系,并根据内存复用的原理,确定按照第一运行顺序运行第一子网络中的每个计算层时,每个计算层所需的内存开销。之后,终端可以从每个计算层所需的内存开销中确定最大内存开销,将该最大内存开销作为第一子网络对应的第一运行顺序所需的内存开销。
示例性地,假设第一子网络为图4中所示的第一子网络,假设第一运行顺序为A->B->C->D->E->F,表3为该第一子网络中每个计算层的输入数据和输出数据所需占用的内存大小。其中,数据In为计算层A的输入数据,数据A为计算层A的输出数据,数据B为计算层B的输出数据,以此类推。表4为该第一子网络中每个计算层所需的内存开销。参见表4,运行计算层A的过程中,需要占用内存的数据有数据In和数据A,所需的内存开销为20M,运行计算层B的过程中,需要占用内存的数据有数据A和数据B,所需的内存开销为110M,运行计算层C的过程中,由于数据A还需要在之后运行计算层D时使用,因此数据A占用的内存暂时不能被释放,因此需要占用内存的数据有数据A、数据B和数据C,所需的内存开销为120M。同理,可以确定运行计算层D、E、F的过程中,所需的内存开销分别为70M、70M、30M。
表3
数据 | 所需的内存开销 |
数据In | 10M |
数据A | 10M |
数据B | 100M |
数据C | 10M |
数据D | 50M |
数据E | 10M |
数据F | 10M |
表4
运行顺序 | 所需占用内存的数据 | 所需的内存开销 |
计算层A | 数据In+数据A | 20M |
计算层B | 数据A+数据B | 110M |
计算层C | 数据A+数据B+数据C | 120M |
计算层D | 数据A+数据C+数据D | 70M |
计算层E | 数据C+数据D+数据E | 70M |
计算层F | 数据C+数据E+数据F | 30M |
在本申请实施例中,确定第一子网络中第一运行顺序中每个计算层所需的内存开销之后,可以将每个计算层所需的内存开销中最大的值确定为最大内存开销,将最大内存开销作为第一运行顺序所需的内存开销。
示例性地,参见表4,每个计算层所需的内存开销中最大的值为120M,即确定最大内存开销为120M,将120M作为第一子网络的第一运行顺序A->B->C->D->E->F所需的内存开销。
需要说明的是,对于前述子网络可以作为一个独立的网络进一步进行划分的情况,可以将进一步划分得到的子网络作为该网络的一个计算层,根据前述方法得到每个子网络的运行顺序所需的内存开销,进而根据每个子网络所需的内存开销,确定该网络的内存开销。
步骤103:根据多种运行顺序中每种运行顺序所需的内存开销,确定多个计算层的最优运行顺序。
在终端根据多个计算层之间的运行关系,直接确定多种运行顺序的实现方式的情况下,终端可以从多种运行顺序所需的内存开销中确定最小内存开销,将最小内存开销对应的运行顺序作为多个计算层的最优运行顺序。
需要说明的是,最小内存开销可能对应有一个或多个运行顺序,当对应一个运行顺序时,直接将该运行顺序作为多个计算层的最优运行顺序,当对应多个运行顺序时,终端可以随机选择对应的多个运行顺序中的一个运行顺序,作为多个计算层的最优运行顺序。
可选地,在根据前述方法通过对深度学习网络进行拆分,得到多个子网络的情况下,终端在确定得到每个子网络对应的每种运行顺序所需的内存开销之后,可以从每个子网络的一种或多种运行顺序中确定所需的内存开销最小的运行顺序,然后根据确定的每个子网络的内存开销最小的运行顺序,确定多个计算层的最优运行顺序。
在本申请实施例中,可以从每个子网络对应的每种运行顺序所需的内存开销中,选择最小的内存开销,将最小的内存开销对应的运行顺序,确定为每个子网络对应的最优运行顺序。之后,终端可以根据各个子网络的顺序和确定的每个子网络的最优运行顺序,确定多个计算层的最优运行顺序。
需要说明的是,若一个子网络的最小的内存开销对应两种或两种以上的运行顺序,则可以从对应的两种或两种以上的运行顺序中随机选择一种运行顺序,作为该子网络的运行顺序。
示例性地,仍以图3至图6为例,假设图4中的第一子网络所需的最小内存开销为70M,对应的最优运行顺序为A->D->E->B->C->F,图5中的第二子网络所需的最小内存开销为100M,对应的最优运行顺序为F->G->I->H->J,图6中的第三子网络所需的最小内存开销为80M,对应的最优运行顺序为J->K->M->L,由于第二子网络要在第一子网络之后运行,第三子网络要在第二子网络之后运行,因此,综合以上内容,可以确定出图3中多个计算层的最优运行顺序为:A->D->E->B->C->F->G->I->H->J->K->M->L。
综上所述,在本申请实施例中,确定深度学习网络中包括的多个计算层对应的多种运行顺序,然后确定每种运行顺序所需的内存开销,进而根据每种运行顺序所需的内存开销,确定多个计算层的最优运行顺序。由于多个计算层的最优运行顺序是通过不同的运行顺序所需的内存开销来进行确定的,因此,根据最优运行顺序来运行深度学习网络,可以有效地减少深度学习网络的内存开销,也即可以使内存优化的效果更加显著。
参见图8,本申请实施例提供了一种优化深度学习网络的运行过程的装置800,该装置800包括:
第一确定模块801,用于根据深度学习网络包括的多个计算层中每个计算层的输入数据的来源,确定多种运行顺序,多种运行顺序中的每种运行顺序用于指示运行多个计算层的一种顺序;
第二确定模块802,用于确定多种运行顺序中每种运行顺序所需的内存开销;
第三确定模块803,用于根据多种运行顺序中每种运行顺序所需的内存开销,确定多个计算层的最优运行顺序。
可选地,第一确定模块包括:
拆分单元,用于对深度学习网络进行拆分,得到多个子网络;
第一确定单元,用于根据每个子网络包括的每个计算层的输入数据的来源,确定每个子网络对应的一种或多种运行顺序,一种或多种运行顺序中的每种运行顺序用于指示运行相应子网络包括的计算层的一种顺序;
第二确定单元,用于将针对多个子网络确定得到的运行顺序,作为多种运行顺序。
可选地,拆分单元包括:
第一确定子单元,用于按照多个计算层的先后顺序,从多个计算层中确定一个或多个分支开始层和一个或多个分支结束层,每个分支开始层的输出数据为两个或两个以上的其他计算层的输入数据,每个分支结束层的输入数据来自两个或两个以上的其他计算层,或者,每个分支结束层后不存在其他计算层;
拆分子单元,用于根据一个或多个分支开始层和一个或多个分支结束层,对深度学习网络进行拆分,得到多个子网络。
可选地,第二确定模块包括:
第三确定单元,用于确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销。
可选地,第三确定单元包括:
第二确定子单元,用于对于第一子网络的第一运行顺序,确定按照第一运行顺序运行第一子网络中的计算层时,每个计算层所需的内存开销,第一子网络是指多个子网络中的任一子网络,第一运行顺序是指第一子网络对应的一种或多种运行顺序中的任一运行顺序;
第三确定子单元,用于从每个计算层所需的内存开销中确定最大内存开销;
第四确定子单元,用于将最大内存开销作为第一运行顺序所需的内存开销。
可选地,第三确定模块包括:
第四确定单元,用于从每个子网络对应的一种或多种运行顺序中,确定所需的内存开销最小的运行顺序;
第五确定单元,用于根据每个子网络对应的内存开销最小的运行顺序,确定多个计算层的最优运行顺序。
综上所述,在本申请实施例中,确定深度学习网络中包括的多个计算层对应的多种运行顺序,然后确定每种运行顺序所需的内存开销,进而根据每种运行顺序所需的内存开销,确定多个计算层的最优运行顺序。由于多个计算层的最优运行顺序是通过不同的运行顺序所需的内存开销来进行确定的,因此,根据最优运行顺序来运行深度学习网络,可以有效地减少深度学习网络的内存开销,也即可以使内存优化的效果更加显著。
需要说明的是:上述实施例提供的优化深度学习网络的运行过程的装置在优化深度学习网络的运行过程时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的优化深度学习网络的运行过程的装置与优化深度学习网络的运行过程的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是本申请实施例提供的一种终端900的结构框图。该终端900可以是智能手机、平板电脑、笔记本电脑或台式电脑。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端900包括有:处理器901和存储器902。
处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的优化深度学习网络的运行过程的方法。
在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、触摸显示屏905、摄像头906、音频电路907、定位组件908和电源909中的至少一种。
外围设备接口903可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路904用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路904还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏905用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个设置于终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在其他一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。
定位组件908用于定位终端900的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件908可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源909用于为终端900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。
加速度传感器911可以检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制触摸显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器912可以检测终端900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对终端900的3D动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器913可以设置在终端900的侧边框和/或触摸显示屏905的下层。当压力传感器913设置在终端900的侧边框时,可以检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在触摸显示屏905的下层时,由处理器901根据用户对触摸显示屏905的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置终端900的正面、背面或侧面。当终端900上设置有物理按键或厂商Logo时,指纹传感器914可以与物理按键或厂商Logo集成在一起。
光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制触摸显示屏905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏905的显示亮度;当环境光强度较低时,调低触摸显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。
接近传感器916,也称距离传感器,通常设置在终端900的前面板。接近传感器916用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制触摸显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制触摸显示屏905从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例还提供了一种非临时性计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行上述图1所示实施例提供的优化深度学习网络的运行过程的方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图1所示实施例提供的优化深度学习网络的运行过程的方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (9)
1.一种优化深度学习网络的运行过程的方法,其特征在于,所述方法包括:
按照深度学习网络包括的多个计算层的先后顺序,从所述多个计算层中确定一个或多个分支开始层和一个或多个分支结束层,每个分支开始层的输出数据为两个或两个以上的其他计算层的输入数据,每个分支结束层的输入数据来自两个或两个以上的其他计算层,或者,每个分支结束层后不存在其他计算层;
根据所述一个或多个分支开始层和所述一个或多个分支结束层,对所述深度学习网络进行拆分,得到多个子网络,所述多个子网络中存在具有分支开始层和分支结束层的子网络;
根据每个子网络包括的每个计算层的输入数据的来源,确定每个子网络对应的一种或多种运行顺序,所述一种或多种运行顺序中的每种运行顺序用于指示运行相应子网络包括的计算层的一种顺序;
根据每个子网络在所述深度学习网络中的先后顺序和所述多个子网络确定得到的运行顺序,确定所述深度学习网络的多种运行顺序,所述多种运行顺序中的每种运行顺序用于指示运行所述多个计算层的一种顺序;
确定所述多种运行顺序中每种运行顺序所需的内存开销;
根据所述多种运行顺序中每种运行顺序所需的内存开销,确定所述多个计算层的最优运行顺序。
2.根据权利要求1所述的方法,其特征在于,所述确定所述多种运行顺序中每种运行顺序所需的内存开销,包括:
确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销。
3.根据权利要求2所述的方法,其特征在于,所述确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销,包括:
对于第一子网络的第一运行顺序,确定按照所述第一运行顺序运行所述第一子网络中的计算层时,每个计算层所需的内存开销,所述第一子网络是指所述多个子网络中的任一子网络,所述第一运行顺序是指所述第一子网络对应的一种或多种运行顺序中的任一运行顺序;
从每个计算层所需的内存开销中确定最大内存开销;
将所述最大内存开销作为所述第一运行顺序所需的内存开销。
4.根据权利要求2或3所述的方法,其特征在于,所述根据所述多种运行顺序中每种运行顺序所需的内存开销,确定所述多个计算层的最优运行顺序,包括:
从每个子网络对应的一种或多种运行顺序中,确定所需的内存开销最小的运行顺序;
根据每个子网络对应的内存开销最小的运行顺序,确定所述多个计算层的最优运行顺序。
5.一种优化深度学习网络的运行过程的装置,其特征在于,所述装置包括:
第一确定模块,用于按照深度学习网络包括的多个计算层的先后顺序,从所述多个计算层中确定一个或多个分支开始层和一个或多个分支结束层,每个分支开始层的输出数据为两个或两个以上的其他计算层的输入数据,每个分支结束层的输入数据来自两个或两个以上的其他计算层,或者,每个分支结束层后不存在其他计算层;根据所述一个或多个分支开始层和所述一个或多个分支结束层,对所述深度学习网络进行拆分,得到多个子网络,所述多个子网络中存在具有分支开始层和分支结束层的子网络;根据每个子网络包括的每个计算层的输入数据的来源,确定每个子网络对应的一种或多种运行顺序,所述一种或多种运行顺序中的每种运行顺序用于指示运行相应子网络包括的计算层的一种顺序;根据每个子网络在所述深度学习网络中的先后顺序和所述多个子网络确定得到的运行顺序,确定所述深度学习网络的多种运行顺序,所述多种运行顺序中的每种运行顺序用于指示运行所述多个计算层的一种顺序;
第二确定模块,用于确定所述多种运行顺序中每种运行顺序所需的内存开销;
第三确定模块,用于根据所述多种运行顺序中每种运行顺序所需的内存开销,确定所述多个计算层的最优运行顺序。
6.根据权利要求5所述的装置,其特征在于,所述第二确定模块包括:
第三确定单元,用于确定每个子网络对应的一种或多种运行顺序中每种运行顺序所需的内存开销。
7.根据权利要求6所述的装置,其特征在于,所述第三确定单元包括:
第二确定子单元,用于对于第一子网络的第一运行顺序,确定按照所述第一运行顺序运行所述第一子网络中的计算层时,每个计算层所需的内存开销,所述第一子网络是指所述多个子网络中的任一子网络,所述第一运行顺序是指所述第一子网络对应的一种或多种运行顺序中的任一运行顺序;
第三确定子单元,用于从每个计算层所需的内存开销中确定最大内存开销;
第四确定子单元,用于将所述最大内存开销作为所述第一运行顺序所需的内存开销。
8.根据权利要求6或7所述的装置,其特征在于,所述第三确定模块包括:
第四确定单元,用于从每个子网络对应的一种或多种运行顺序中,确定所需的内存开销最小的运行顺序;
第五确定单元,用于根据每个子网络对应的内存开销最小的运行顺序,确定所述多个计算层的最优运行顺序。
9.一种计算机可读存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215315.7A CN112990421B (zh) | 2019-12-02 | 2019-12-02 | 优化深度学习网络的运行过程的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911215315.7A CN112990421B (zh) | 2019-12-02 | 2019-12-02 | 优化深度学习网络的运行过程的方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112990421A CN112990421A (zh) | 2021-06-18 |
CN112990421B true CN112990421B (zh) | 2023-09-05 |
Family
ID=76331262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911215315.7A Active CN112990421B (zh) | 2019-12-02 | 2019-12-02 | 优化深度学习网络的运行过程的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112990421B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113657584B (zh) * | 2021-08-31 | 2024-04-09 | 安谋科技(中国)有限公司 | 神经网络模型计算方法、数据处理方法、电子设备及介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310286A (zh) * | 2013-06-25 | 2013-09-18 | 浙江大学 | 一种具有时间序列特性的产品订单预测方法及装置 |
CN105550748A (zh) * | 2015-12-09 | 2016-05-04 | 四川长虹电器股份有限公司 | 基于双曲正切函数的新型神经网络的构造方法 |
CN105786616A (zh) * | 2016-02-02 | 2016-07-20 | 上海达梦数据库有限公司 | 内存管理方法及系统 |
CN107220076A (zh) * | 2016-09-27 | 2017-09-29 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN108369663A (zh) * | 2015-12-02 | 2018-08-03 | 谷歌有限责任公司 | 确定神经网络的执行顺序 |
CN110058943A (zh) * | 2019-04-12 | 2019-07-26 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10175980B2 (en) * | 2016-10-27 | 2019-01-08 | Google Llc | Neural network compute tile |
US20180373980A1 (en) * | 2017-06-27 | 2018-12-27 | drive.ai Inc. | Method for training and refining an artificial intelligence |
-
2019
- 2019-12-02 CN CN201911215315.7A patent/CN112990421B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103310286A (zh) * | 2013-06-25 | 2013-09-18 | 浙江大学 | 一种具有时间序列特性的产品订单预测方法及装置 |
CN108369663A (zh) * | 2015-12-02 | 2018-08-03 | 谷歌有限责任公司 | 确定神经网络的执行顺序 |
CN105550748A (zh) * | 2015-12-09 | 2016-05-04 | 四川长虹电器股份有限公司 | 基于双曲正切函数的新型神经网络的构造方法 |
CN105786616A (zh) * | 2016-02-02 | 2016-07-20 | 上海达梦数据库有限公司 | 内存管理方法及系统 |
CN107220076A (zh) * | 2016-09-27 | 2017-09-29 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN110058943A (zh) * | 2019-04-12 | 2019-07-26 | 三星(中国)半导体有限公司 | 用于电子设备的内存优化方法和设备 |
Non-Patent Citations (1)
Title |
---|
孟小峰 等.机器学习化数据库系统研究综述.《计算机研究与发展》.2019,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112990421A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108304265B (zh) | 内存管理方法、装置及存储介质 | |
CN113127181B (zh) | 内存管理方法、装置及存储介质 | |
CN111127509B (zh) | 目标跟踪方法、装置和计算机可读存储介质 | |
CN109922356B (zh) | 视频推荐方法、装置和计算机可读存储介质 | |
CN109166150B (zh) | 获取位姿的方法、装置存储介质 | |
CN109102811B (zh) | 音频指纹的生成方法、装置及存储介质 | |
CN110705614A (zh) | 模型训练方法、装置、电子设备及存储介质 | |
CN110471614B (zh) | 一种存储数据的方法、检测终端的方法及装置 | |
CN113469360B (zh) | 推理方法及装置 | |
CN110737692A (zh) | 一种检索数据的方法、建立索引库的方法及装置 | |
CN112990421B (zh) | 优化深度学习网络的运行过程的方法、装置及存储介质 | |
CN111193604B (zh) | 虚拟网络功能链的部署方法、装置、设备及存储介质 | |
CN109388732B (zh) | 音乐地图的生成和显示方法、装置及存储介质 | |
CN108831423B (zh) | 提取音频数据中主旋律音轨的方法、装置、终端及存储介质 | |
CN112365088B (zh) | 行程关键点的确定方法、装置、设备及可读存储介质 | |
CN111984755B (zh) | 确定目标停车点的方法、装置、电子设备及存储介质 | |
CN111402873B (zh) | 语音信号处理方法、装置、设备及存储介质 | |
CN111984738B (zh) | 数据关联方法、装置、设备及存储介质 | |
CN115545592A (zh) | 显示定位的方法、装置、设备和存储介质 | |
CN113535039A (zh) | 更新页面的方法、装置、电子设备及计算机可读存储介质 | |
CN112214115A (zh) | 输入方式的识别方法、装置、电子设备及存储介质 | |
CN112000899A (zh) | 景点信息的展示方法、装置、电子设备及存储介质 | |
CN112135256A (zh) | 移动轨迹的确定方法、装置、设备及可读存储介质 | |
CN113052408B (zh) | 一种社区聚合的方法及装置 | |
CN113590877B (zh) | 获取标注数据的方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |