CN113673701B - 神经网络模型的运行方法、可读介质和电子设备 - Google Patents
神经网络模型的运行方法、可读介质和电子设备 Download PDFInfo
- Publication number
- CN113673701B CN113673701B CN202110974281.0A CN202110974281A CN113673701B CN 113673701 B CN113673701 B CN 113673701B CN 202110974281 A CN202110974281 A CN 202110974281A CN 113673701 B CN113673701 B CN 113673701B
- Authority
- CN
- China
- Prior art keywords
- calculation
- layer
- data
- storage area
- memory
- 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
- 238000003062 neural network model Methods 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 title claims abstract description 80
- 238000004364 calculation method Methods 0.000 claims abstract description 372
- 230000015654 memory Effects 0.000 claims abstract description 118
- 238000012163 sequencing technique Methods 0.000 claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims description 53
- 238000013528 artificial neural network Methods 0.000 claims description 29
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000013473 artificial intelligence Methods 0.000 abstract description 7
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 25
- 238000010586 diagram Methods 0.000 description 22
- 238000012545 processing Methods 0.000 description 12
- 238000012546 transfer Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000011017 operating method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
Abstract
本申请涉及人工智能领域,提供了一种神经网络模型的运行方法,用于运行包括计算层和排序层的神经网络模型。通过在电子设备处理器内部的第二存储器中设置第一存储区域和第二存储区域,并且处理器在对待处理数据中的第二数据部分进行计算层计算并将计算结果存储至第二存储区域的过程中,并行对第一存储区域中存储的待处理数据中的第一数据部分的计算层计算结果进行排序层排序并存储至设置于处理器外部的第一存储器中。如此,处理器总是并行执行不同数据部分的计算层计算和排序层排序,并且处理器无需将计算层的计算结果存储至第一存储器,提高了神经网络模型的运行速度,减少了运行神经网络模型占用的硬件资源,提升了电子设备的性能。
Description
技术领域
本申请涉及人工智能领域,特别涉及一种神经网络模型的运行方法、可读介质和电子设备。
背景技术
随着人工智能(artificial intelligence,AI)的迅速发展,神经网络,尤其是深度神经网络(Deep Neural Networks,DNN)在人工智能领域的应用越来越广泛。同时,伴随着DNN模型网络层数和网络类型的增加,以及DNN模型的输入数据量的增加,运行DNN模型所占用的硬件资源(例如内存资源)的也越来越大,传统的神经网络模型的运行方法已不能足AI领域对DNN计算速度的需求。
发明内容
有鉴于此,本申请实施例提供了神经网络模型的运行方法、可读介质和电子设备。通过并行运行神经网络模型中的不同网络层,以及将神经网络模型中部分网络层的运算结果存储于处理器内部的存储器中,从而减小了运行神经网络模型过程中访问处理器外部的存储器的次数,提高了神经网络模型的运行速度,降低了运行神经网络模型占用的硬件资源,提升了运行神经网络模型的电子设备的性能。
第一方面,本申请实施例提供了一种神经网络模型的运行方法,应用于电子设备,该电子设备包括处理器、设置于处理器外部的第一存储器以及设置于处理器内部的第二存储器,其特征在于,神经网络模型包括计算层和排序层;
并且该方法包括:
处理器采用计算层和排序层对从待处理数据中先后获取的第一数据部分和第二数据部分进行如下处理:
获取第一数据部分,并通过神经网络模型的计算层,对第一数据部分进行计算得到第一计算结果,并将第一计算结果存储于第二存储器的第一存储区域中,其中第一数据部分的第一计算结果的数据量小于第一存储区域的存储空间;并且在将第一计算结果存入第一存储区域之后,执行如下操作:
通过排序层对从第一存储区域中读取出的第一计算结果进行排序得到第一排序结果,并将第一排序结果存储于第一存储器中,并且获取第二数据部分,并对第二数据部分进行计算得到第二计算结果,并将第二计算结果存储于第二存储器的第二存储区域中,其中第二数据部分的计算结果的数据量小于第二存储区域的存储空间。
也即是说,在本申请实施例中,待处理数据可以分为多个数据部分,处理器可以依次从待处理数据中读取不同的数据部分进行计算层计算得到该数据部分的计算层计算结果,再将计算结果存储至第二存储器中;并且在处理器通过计算层对一个数据部分进行计算的过程中,处理器可以通过排序层对存储于第二存储器中的其他数据部分的计算结果进行排序,并将排序结果传送至第一存储器中。如此,通过计算层对待处理数据进行计算的结果不会传送至第一存储器中,减少了神经网络模型运行过程中访问第一存储器的次数,并且处理器大多数情况下总是并行执行一个数据部分的计算层计算和另一个数据部分的排序层排序,如此,提高了神经网络模型的运行速度,减少了运行神经网络模型时占用的第一存储器的空间,提升了电子设备的性能。
在上述第一方面的一种可能实现中,在将第二计算结果存储于第二存储器的第二存储区域后,还包括:
通过排序层对从第二存储区域中读取出的第二计算结果进行排序得到第二排序结果,并将第二排序结果存储于第一存储器中。
在上述第一方面的一种可能实现中,第一存储区域和第二存储区域的大小相同。
在本申请实施例中,在第二存储器的可用空间和处理器单次读取的待处理数据的数据部分的大小一定的情况下,可以最大化处理器单次读取的数据部分的大小,从而提高神经网络模型的运行速度。
在上述第一方面的一种可能实现中,计算层包括以下神经网络中的至少一种:卷积网络、元素相加网络、元素相乘网络、矩阵元素对应相乘网络。
在上述第一方面的一种可能实现中,排序层包括以下神经网络中的至少一种:深度到空间转换网络、空间到深度转换网络、转置网络、裁切网络、填充网络。
第二方面,本申请实施例提供了一种运行神经网络模型的电子设备,该电子设备包括处理器、设置于处理器外部的第一存储器,设置于处理器内部设置有第二存储器,其中,
处理器采用神经网络模型的计算层和排序层对从待处理数据中先后获取的第一数据部分和第二数据部分进行如下处理:
获取第一数据部分,并通过神经网络模型的计算层,对第一数据部分进行计算得到第一计算结果,并将第一计算结果存储于第二存储器的第一存储区域中,其中第一数据部分的第一计算结果的数据量小于第一存储区域的存储空间;并且在将第一计算结果存入第一存储区域之后,执行如下操作:
通过排序层对从第一存储区域中读取出的第一计算结果进行排序得到第一排序结果,并将第一排序结果存储于第一存储器中,并且获取第二数据部分,并对第二数据部分进行计算得到第二计算结果,并将第二计算结果存储于第二存储器的第二存储区域中,其中第二数据部分的计算结果的数据量小于第二存储区域的存储空间。
在上述第二方面的一种可能实现中,处理器将第二计算结果存储于第二存储器的第二存储区域后,通过排序层对从第二存储区域中读取出的第二计算结果进行排序得到第二排序结果,并将第二排序结果存储于第一存储器中。
在上述第二方面的一种可能实现中,处理器还包括直接存储器访问控制器,并且由直接存储器访问控制器通过排序层对从第一存储区域中读取出的第一计算结果进行排序得到第一排序结果,并将第一排序结果存储于第一存储器中;以及由直接存储器访问控制器通过排序层对从第二存储区域中读取出的第二计算结果进行排序得到第二排序结果,并将第二排序结果存储于第一存储器中。
在上述第二方面的一种可能实现中,处理器还包括运算单元,并且由运算单元对第一数据部分进行计算得到第一计算结果,并将第一计算结果存储于第二存储器的第一存储区域中;以及由运算单元对第二数据部分进行计算得到第二计算结果,并将第二计算结果存储于第二存储器的第二存储区域中。
在上述第二方面的一种可能实现中,第一存储区域和第二存储区域的大小相同。
在上述第二方面的一种可能实现中,计算层包括以下神经网络中的至少一种:卷积网络、元素相加网络、元素相乘网络、矩阵元素对应相乘网络。
在上述第二方面的一种可能实现中,排序层包括以下神经网络中的至少一种:深度到空间转换网络、空间到深度转换网络、转置网络、裁切网络、填充网络。
第三方面,本申请实施例提供了一种可读介质,可读介质上存储有指令,当该指令被电子设备的处理器执行时使电子设备实现上述第一方面及第一方面的各种可能实现提供的任一种神经网络模型运行方法。
附图说明
图1根据本申请的一些实施例,示出了一种神经网络模型的结构示意图;
图2根据本申请的一些实施例,示出了一种电子设备的结构示意图;
图3A根据本申请的一些实施例,示出了一种神经网络模型运行方法的流程示意图;
图3B根据本申请的一些实施例,示出了一种神经网络模型运行方法的时序示意图;
图4A根据本申请的一些实施例,示出了一种神经网络模型运行方法的流程示意图;
图4B根据本申请的一些实施例,示出了一种神经网络模型运行方法的时序示意图;
图5根据本申请的一些实施例,示出了一种神经网络模型的计算过程示意图;
图6根据本申请的一些实施例,示出了一种对图像数据矩阵进行分块的示意图;
图7根据本申请的一些实施例,示出了一种对数据块1进行计算层计算的示意图;
图8根据本申请的一些实施例,示出了一种对数据块2进行计算层计算的示意图;
图9根据本申请的一些实施例,示出了一种对数据块1的计算层计算结果进行排序层排序的示意图;
图10根据本申请的一些实施例,示出了一种对数据块3进行计算层计算的示意图;
图11根据本申请的一些实施例,示出了一种对数据块2的计算层计算结果进行排序层排序的示意图;
图12根据本申请的一些实施例,示出了一种对数据块3的计算层计算结果进行排序层排序的示意图。
具体实施方式
本申请的说明性实施例包括但不限于神经网络模型的运行方法、可读介质和电子设备。
下面结合附图对本申请实施例的技术方案进行详细介绍。
首先,介绍本申请实施例提供的神经网络模型的运行方法所适用的神经网络模型的结构。
图1根据本申请的一些实施例,示出了一种神经网络模型的结构示意图。如图1所示,神经网络模型10包括输入层11、计算层12、排序层13和输出层14,其中,输入层11用于获取进行神经网络计算的数据;计算层12为需要对数据进行算术和/或逻辑计算的神经网络层,例如卷积层、元素相加层、元素相乘层等;排序层13为不需要对数据进行计算,只需要对数据的顺序进行重新排列的层,例如TensorflowTM(基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现)中的Depth to Space(深度到空间转换)层、Spaceto Depth(空间到深度转换)层、Transpose(转置)层、Padding(填充)层等,并且排序层13为计算层12的下一层,用于对计算层12的计算结果中的数据进行排序;输出层14用于输出神经网络模型10的计算结果。也即是说,本申请各实施例提供的神经网络模型运行方法适用于包括计算层12和排序层13,并且排序层13连接于计算层12之后(也即计算层12的计算结果为排序层13的输入)的神经网络模型。可以理解,图1所示的神经网络模型10的结构只是一种示例,在另一些实施例中,神经网络模型10还可以包括更多或更少的网络层,本领域的普通技术人员应当理解,本申请各实施例提供的神经网络模型运行方法适用于包括计算层和排序层的各类神经网络模型,在此不做限定。
可以理解,在另一些实施例中,计算层12也可以是其他需要对数据进行其他类型的神经网络,例如使两个矩阵对应元素相乘的Element-wise Product (元素对应相乘)层;排序层13也可以是其他类型的神经网络,例如对输入数据的大小进行裁减的Crop层等,在此不做限定。
为便于理解本申请实施例的技术方案,下面对执行神经网络模型10的计算过程的电子设备20进行介绍。
图2根据本申请的一些实施例,示出了一种电子设备20的结构示意图,如图2所示,电子设备20包括处理器21、系统内存22(第一存储器)、非易失性存储器23、输入/输出设备24、通信接口25以及用于耦接处理器21、系统内存22、非易失性存储器23、输入/输出设备24、通信接口25的系统控制逻辑26。其中:
处理器201可以包括一个或多个处理单元,例如可以包括中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processor,DSP)、微处理器(Micro-programmed Control Unit,MCU)、可编程逻辑器件(Field Programmable Gate Array,FPGA)、人工智能处理单元(ArtificialIntelligence Processing Unit,AIPU)、神经网络处理器(Neural-network ProcessingUnit,NPU)等的处理模块或处理电路。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。在一些实施例中,处理器201可以执行神经网络模型10的计算过程。
在一些实施例中,处理器21可以包括控制单元(控制器)210、运算单元211(运算器)和存储单元212(第二存储器),其中控制单元210用于对处理器21进行调度,在一些实施例中,控制单元210还包括直接存储器访问控制器(Direct Memory Access Controller,DMAC)2101,用于将存储单元212中的数据传递给其他单元,例如传递给系统内存22。在一些实施例中,DMAC 2101还可以用于对存储单元212中的数据进行排序,并传递给系统内存22。
运算单元211用于执行具体的算数和/或逻辑运算,在一些实施例中,运算单元可以包括算术逻辑单元,算术逻辑单元是指能实现多组算术运算与逻辑运算的组合逻辑电路,用于执行算术与逻辑操作。在另一些实施中,运算单元211还可以包括多个适于运行神经网络模型的专用集成电路(Application Specific Integrated Circuit,ASIC),例如卷积计算单元、向量计算单元等。
存储单元212用于临时存储运算单元211的输入和/或输出数据。
可以理解,在另一些实施例中,DMAC 2101也可以不集成在处理器21中,而是与系统控制逻辑26耦接的独立模块,本申请实施例不做限定。
系统内存22可以包括随机存取存储器(Random-Access Memory,RAM),双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,DDR SDRAM)等存储器,用于临时存储电子设备20的数据或指令。例如,在一些实施例中,系统内存22可以用于临时存储计算层12的计算结果,也可以用来临时存储排序层13的排序结果。
非易失性存储器23可以是包括用于永久性存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。非易失性存储器23可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD)、光盘(Compact Disc,CD)、数字通用光盘(Digital Versatile Disc,DVD)、固态硬盘(Solid-State Drive,SSD)等。在一些实施例中,非易失性存储器23也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡等。在一些实施例中,非易失性存储器23用于永久地存储电子设备20的数据或指令,例如用于存储神经网络模型10的指令。
输入/输出(I/O)设备24可以包括输入设备,例如键盘、鼠标、触摸屏、等,用于将用户的操作转换为模拟或数字信号并传递给处理器21;以及输出设备,例如扬声器、打印机、显示器等,用于将电子设备20中的信息以声音、文字、图像等形式展示给用户。
通信接口25提供电子设备20与其他电子设备进行通信的软/硬件接口,使得电子设备20能够与其他电子设备20进行数据交换,例如电子设备20可以通过通信接口25从其他电子设备获取用于进行运行神经网络模型的数据,也可以通过通信接口25将神经网络模型的运算结果传递给其他电子设备。
系统控制逻辑26可以包括任意合适的接口控制器,以向电子设备20的其他模块提供任意合适的接口,使得电子设备20的各个模块可以相互通信。例如,在一些实施例中,系统控制逻辑26与DMAC 2101可以协同作用,以对计算层的计算结果进行排序层排序并传送至系统内存22中。
在一些实施例中,处理器21中的至少一个可以与用于系统控制逻辑26的一个或多个控制器的逻辑封装在一起,以形成系统封装(System in Package,SiP)。在另一些实施例中,处理器21中的至少一个还可以与用于系统控制逻辑26的一个或多个控制器的逻辑集成在同一芯片上,以形成片上系统(System-on-Chip,SoC)。
可以理解,图2示出的电子设备20的硬件结构只是一种示例,在另一些实施例中,电子设备20也可以包括更多或更少的模块,还可以组合或拆分部分模块,本申请实施例不做限定。
可以理解,电子设备20可以是能够运行神经网络模型的任意电子设备,包括但不限于膝上型计算机、台式计算机、平板计算机、手机、服务器、可穿戴设备、头戴式显示器、移动电子邮件设备、便携式游戏机、便携式音乐播放器、阅读器设备、其中嵌入或耦接有一个或多个处理器的电视机,本申请实施例不做限定。
下面结合电子设备20的硬件结构,对电子设备20执行本申请实施例提供的神经网络模型运行方法的过程,进行详细介绍。
本申请实施例提供一种神经网络模型运行方法,处理器21先对输入数据进行计算层计算,并将计算层计算结果存储于系统内存22中,再从系统内存22中读取计算层计算结果进行排序层排序,最后再将排序结果传送到系统内存22中。
图3A根据本申请的一些实施例,示出了一种神经网络模型运行方法的流程示意图。图3B根据本申请的一些实施例,示出了一种神经网络模型计算的时序图。下面结合图3A和图3B对本申请实施例进行介绍,该运行方法包括如下步骤:
步骤301:运算单元211根据存储单元212的大小从输入数据中读取数据块N进行计算层计算,生成数据块N的计算层计算结果CN,并将CN存储至存储单元212。
可以理解,在一些实施例中,运算单元211可以根据存储单元212中可以用于存储计算结果的区域的大小,确定单次读取的数据块的大小,从而将输入数据分为多个子数据块。例如,参考图3B,输入数据为大小为W×H×C的三维矩阵,由于存储单元212中可用于存储计算结果的区域的空间大小的限制,处理器21不能同时对输入数据的全部数据进行计算层计算。因此,处理器21可以根据存储单元212中可用于存储计算结果的区域的大小将输入数据在H方向分为n个子数据块,即数据块1,数据块2,……,数据块n,运算单元211每次读取一个数据块进行计算层计算,并在计算过程中将计算结果存储至存储单元212中。其中,1≤N≤n。
可以理解,数据块1,数据块2,……,数据块n的大小可以相同,也可以不同,本申请实施例不做限定。
可以理解,在一些实施例中,数据块N的大小小于存储单元212的可用空间。
步骤302:处理器21将计算结果CN从存储单元212传送系统内存22。处理器21在运算单元211完成一个数据块的计算层计算后,例如完成对数据块N的计算层计算后,即将计算结果CN传送至系统内存22中。
步骤303:处理器21判断是否已经完成所有数据块的计算层计算。如果是,转至步骤304,否则转至步骤301。
可以理解,当完成数据块n的计算层计算后,即完成了对输入数据的计算层计算,此时,系统内存22中存储有输入数据的计算层计算结果。
步骤304:处理器21从系统内存22中读取计算结果CN。处理器21依次从系统内存22中存储的计算层计算结果中读取各数据块的计算层计算结果,例如读取数据块N的计算层计算结果CN。
步骤305:DMAC 2101对计算结果CN进行排序层排序生成排序结果RN,并将排序结果RN传送至系统内存22。DMAC 2101对数据块N的计算层计算结果CN进行排序层排序,并将排序结果RN传送至系统内存22,生成数据块N的神经网络模型计算结果(数据块N的运算结果)。
可以理解,在另一些实施例中,排序层的排序过程也可以由其他模块,例如运算单元211执行,本申请实施例不做限定。
步骤306:处理器21判断是否已经完成所有数据块的排序层排序。如果是,结束运算,否则转至步骤304。
可以理解,当完成数据块n的排序层排序后,即完成了对输入数据的神经网络模型计算。
如此,处理器21在进行神经网络计算时需要多次读/写内存22,并且在需要将计算层的计算结果全部存储于系统内存22中,占用系统内存22的空间,影响电子设备20的性能。此外,由于在运行神经网络模型的过程中是串行对数据块1至数据n进行计算层计算和排序层排序,计算速度较慢。
为解决前述实施例中的问题,本申请实施例还提供一种神经网络模型运行方法,通过在存储单元212设置多个存储区域,用于存储不同部分的输入数据(待处理数据)的计算层计算结果,例如在存储单元212中设置2个大小相同的两个存储区域,分别用于存储输入数据中相邻两个数据块的计算层计算结果,并且,在运算单元211对一个数据块进行计算层计算并存储在存储单元212的其中一个存储区域的过程中,DMAC 2101对存储单元212中另一个存储区域中存储的上一个数据块的计算层计算结果进行排序层排序,并将排序结果传送至系统内存22中。如此,在除对第一个数据块进行计算层计算的计算周期和在对最后一个数据块进行排序层排序的计算周期以外的计算周期内,处理器21可以并行执行对不同的数据块的计算层计算和排序层排序,提高了神经网络模型的运行速度。此外,处理器21只在将排序结果传送至系统内存22时才会访问系统内存22,减少了处理器21访问系统内存22的次数,进一步提高运行速度,并且减小了对系统内存22的占用,提高了电子设备20的性能。
可以理解,在本申请各实施例中,计算周期是指处理器21对单个数据块进行计算层计算或排序层排序所需要的时间。在一些实施例中,若单个计算周期内只进行计算层计算或排序层排序,则计算周期为计算层计算或排序层排序的时间。在另一些实施例中,若单个计算周期内既进行计算层计算又排序层排序,则计算周期为计算层计算和排序层排序中耗时较长的时间。
具体地,图4A根据本申请的一些实施例,示出了一种神经网络模型运行方法的流程示意图,图4B示出了一种神经网络模型运行方法的时序示意图。下面结合图4A和图4B对本申请实施例进行介绍,该运行方法包括如下步骤:
步骤401:处理器21在存储单元212中设置多个存储区域。
可以理解,为了便于在运算单元211对一部分输入数据进行计算层计算的过程中,DMAC2101可以对其他部分输入数据的计算层计算结果进行排序层排序,可以在存储单元212中设置多个存储区域,用于存储不同部分的输入数据的计算层计算结果。例如,在一些实施例中,可以在存储单元212中设置两个存储区域,即存储区域S0和存储区域S1,用于存储不同部分的输入数据的计算层计算结果。
在一些实施例中,前述存储区域S0(第一存储区域)和存储区域S1(第二存储区域)的大小可以相同,从而使得运算单元211单次读取的输入数据的大小相同,便于对输入数据进行划分。并且,在存储单元212中可用空间一定的情况下,存储区域S0和存储区域S1大小相同可以在运算单元单次读取的输入数据的大小相同的情况下,使得运算单元211单次读取的输入数据的大小最大,从而提高计算速度。
在另一些实施例中,存储区域S0和存储区域S1也可以不是相同的大小,在此不做限定。并且,在存储区域S0和存储区域S1的大小不同的情况下,若运算单元211每次读取相同大小的输入数据,从而运算单元211每次读取的输入数据的大小可以根据存储区域S0和存储区域S1中较小的一个能够存储的计算层计算结果的大小确定,也即是说处理器21单个计算周期处理的输入数据大小与存储区域S0和存储区域S1中较小的一个相适应。
可以理解,在一些实施例中,前述多个存储区域的总大小可以根据存储单元212中可用的存储空间来确定。例如,当设置的存储区域为前述存储区域S0和存储区域S1时,在存储单元212中的可用空间为a的情况小,存储区域S0和存储区域S1的大小可以为(a-b)/2,其中b为存储单元212的预留大小,避免存储单元212满负荷影响处理器21的正常运行。
可以理解,在本申请实施例中以2个存储区域S0和S1为例说明存储区域的设置只是一种示例,在另一些实施例中,也可以设置其他数量的存储区域,在此不做限定。
步骤402:运算单元211根据设置的多个存储区域的大小,确定每次读取的输入数据的大小。
例如,在一些实施例中,运算单元211可以根据设置多个存储区域的空间能够存储的计算层计算结果的大小,确定生成该大小的计算结果对应的输入数据的大小s,从而将输入数据分成若干个大小小于s的数据块,并且每次读取总大小小于s的至少一个数据块进行计算层计算。
具体地,在一些实施例中,运算单元211可以根据存储单元212中可以用于存储计算结果的区域的大小,例如根据存储区域S0或存储区域S1的大小,确定生成存储区域S0或存储区域S1能够存储的计算层计算结果对应的输入数据的大小,也即是运算单元211单次读取的输入数据的大小。参考图4B,输入数据与前述实施例相同,即输入数据为大小为W×H×C的矩阵时,存储单元212中的可用区域与前述实施例相同,由于在可用区域设置了大小相同的存储区域S0和存储区域S1,故而处理器21单次进行计算的数据块的大小为前述实施例的一半,因此可以在H方向将输入数据分为2n个子数据块,即数据块1,数据块2,……,数据块2n,并且每次读取1个数据块进行计算层计算。可以理解,数据块1,数据块2,……,数据块2n在H方向的大小可以相同也可以不同,本申请实施例不做限定。
步骤403:运算单元211依次从输入数据中读取数据进行计算层计算,并将计算结果分别存储至设置的多个存储区域中。
可以理解,在一些实施例中,相邻两次计算层计算的计算结果可以存储于不同的存储区域,以避免DMAC2101还未完成对计算层结果的排序层排序即被运算单元211生成的计算层计算结果覆盖,影响计算结果的准确性。例如,参考图4B,运算单元在对数据块1进行计算层计算时,可以将计算结果C1存储到存储区域S0,在对数据块2进行计算层计算时,可以将计算结果C2存储到存储区域S1中。
可以理解,在一些实施例中,在前述步骤401中设置的存储区域为存储区域S0和存储区域S1时,相邻两次计算层计算的计算结果是存储在不同的存储区域,因此,每间隔一个数据块的计算结果是存在同一存储区域,故而当运算单元211已经完成对数据块N的计算层计算且DMAC 2101还未完成对数据块N-1的计算层计算结果CN-1的排序层排序时,运算单元211需要等到DMAC 2101完成对计算结果CN-1的排序层排序后再对数据块N+1进行计算层计算,以避免运算单元211和DMAC 2011对相同的存储区域进行操作。
步骤404:DMAC 2101对存储单元212中存储的计算层计算结果进行排序层排序,并将排序结果发送至系统内存22中。在运算单元211完成对读取的输入数据的计算层计算后,并将计算结果存储在前述多个存储区域中的一个中后,DMAC 2101即可对该区域存储的计算结果进行排序层排序并存储至系统内存22中。并且,在DMAC2101进行排序层排序的过程中,运算单元211可以继续读取输入数据进行计算层计算并将计算结果发送至其他存储区域中。
例如,在一些实施例中,如前所述,假设处理器21在执行步骤403时将计算结果CN-1存储于存储区域S1中,则DMAC 2101对存储区域S1中存储的计算结果CN-1进行排序层排序生成排序结果RN-1,并将排序结果RN-1发送至系统内存22。在DMAC 2101对计算结果CN-1进行排序层排序的过程中,运算单元211可以对数据块N进行计算层计算,生成计算结果CN并将计算结果CN存储于存储区域S0中。
可以理解,在大多数情况下(除对数据块1进行计算层计算的计算周期T′1和对数据块n进行排序层排序的计算周期T′2n+1外的其他计算周期),步骤403和步骤404总是并行执行,也即是说运算单元211对数据块N进行计算层计算时,DMAC 2101对数据块N-1的计算层计算结果CN-1进行排序层排序。
可以理解,在一些实施例中,当DMAC 2101已完成对计算结果CN-1的排序层排序且运算单元211还未完成对数据块N的计算层计算时,DMAC 2101需要等到运算单元211完成对数据块N的计算层计算之后,再对存储区域S0或存储区域S1中存储的数据块N的计算层计算结果CN进行排序层排序,以避免运算单元211和DMAC 2011对相同的存储区域进行操作。
可以理解,在另一些实施例中,排序层排序也可以不是由DMAC 2011执行,本申请实施例不做限定。
步骤405:处理器21判断是否已经完成所有输入数据的神经网络计算。如果已经完成所有输入数据的神经网络计算,则结束计算过程;否则转至步骤403。
参考图3B,由于输入数据被分为n个数据块,处理器21在单个计算周期内只能对单个数据块进行计算层计算或排序层排序,因此图3B所示的实施例需要2n个计算周期(T1至T2n)才能完成对前述输入数据进行神经网络计算。参考图4B,由于输入数据被分为2n个数据块,处理器21在第一个计算周期和最后一个计算周只进行计算层计算或排序层排序,而在中间的计算周期内分别对不同的两个数据块进行计算层计算和排序层排序,因此图4B所示实施例中需要2n+1个计算周期(T′1至T′2n+1)完成对相同大小的输入数据的神经网络计算。
由于图3A和图3B所提供的神经网络模型运行方法处理器21在单个计算周期内处理的数据块的大小为图4A和图4B提供的神经网络模型运行方法在单个周期内处理的数据块的大小的2倍,进而可以认为T1+T2+……+T2n的总时间t约为T′1+T′2+……+T′2n+1的总时间t′的两倍,也即是说采用图4A至图4B所提供的神经网络模型运行方法可以显著提高神经网络模型运行的速度。并且,参考图4B,采用图4A至图4B所提供的神经网络模型运行方法计算层的计算结果无需存储至系统内存22中,减少了运行神经网络模型时时访问系统内存22的次数,进而提高了计算速度,并且还可以减小进行神经网络计算时对系统内存22的占用,节省了电子设备20的带宽,从而提升了电子设备20的性能。
下面结合图4A和图4B提供的神经网络模型运行方法,以神经网络模型10的计算层12为卷积层,排序层13为Depth to Space层为例,详细介绍本申请实施例提供的神经网络模型运行方法的技术方案。
为便于理解本申请实施例的技术方案,在介绍神经网络模型的计算过程前,先介绍卷积的计算过程,设矩阵A的大小为M×M,卷积核K的大小为N×N,卷积步长为k,则矩阵A与卷积核K的卷积结果H可以表示为:
(1)
在公式(1)中, H(m,n)为矩阵H第m行第n列的元素;m,n满足以下关系式:
,。
其中为向下取整运算,即为小于X的最大整数。由于M-N<M且k为正整数,可见,也即是说卷积结果H的大小总是小于或等于矩阵A的大小。
为确保卷积结果对应的矩阵的大小与输入数据的大小相同,避免丢失图片数据矩阵边缘的数据特征,通常在卷积计算的过程中在输入矩阵的第一行前和最后一行后填充值为0的行以及在输入矩阵第一列之前和最后一列之后填充值为0的行或列,即在输入矩阵的四周填充值为0的行或列。设在输入矩阵A的四周各填充数量为P的值为0的行或列,此时,输入矩阵A的大小变为(M+2P)×(M+2P)。此时,公式(1)中的m,n满足以下关系式:
,。
令,即可计算得到P的值。
下面介绍神经网络模型的基本功能。
图5根据本申请的一些实施例,示出了一种计算层12为卷积层、排序层13为Depthto Space层的神经网络的计算过程示意图。参考图5,神经网络模型10的输入层11的输入数据为图像数据,图像数据矩阵A0的大小为9×9×1(即W为9,H为9,C为1),并且图像数据矩阵中的每个元素都对应图像的一个像素。计算层12包括9个大小为3×3的卷积核Ki(i=1,2,……,9),并且图像数据矩阵在计算层12根据公式(1)分别与9个卷积核进行卷积,用于提取图像数据的9种特征。并且,计算过程中P=1,从而图像数据矩阵通过计算层12的卷积后生成9个大小为9×9×1(图中O1至O9)的特征矩阵,也即是说计算层12的计算结果可以表示为9×9×9(W×H×C)的矩阵A1。
继续参考图5,排序层13为对计算层12的计算结果中W和H相同的大小为1×1×9的矩阵进行重新排序,生成3×3×1的矩阵,并用该矩阵替换图像数据矩阵中W和H相同的元素的位置。由于图像数据矩阵中的每一个元素都对应图像数据的一个像素,也即是说通过神经网络计算后,输入图像数据中的每一个像素都由9个像素进行替换,从而提高了图片的分辨率,在一些实施例中,上述神经网络又称超分辨网络。例如,计算层12的计算结果矩阵A1中A1(1,1,i),其中i= 1,2,……,9的值分别为A、B、C、D、E、F、G、H、I重新排序后的3×3×1的矩阵中A211为:
并且,排序层13完成排序后用A211替换图像数据矩阵A0中A0(1,1)的位置。可以理解,当排序层13完成对计算结果矩阵A1的排序后,也即是通过神经网络模型10对图像数据矩阵A0进行计算后,输出结果为27×27×1的矩阵,从而输入图像数据的分辨率变为原来的3倍。
下面对结合图4A和图4B所提供的神经网络模型运行方法以及图5所示的神经网络模型10的计算过程对本申请实施例的技术方案进行详细介绍。
假设处理器21的存储单元212中能够用于存储卷积层的结果的空间能够存储大小为9×6×9的矩阵,故而可以在该空间设置两个可以分别存储大小为9×3×9的矩阵的存储区域S0和存储区域S1。参考图6,此时可以图像数据矩阵A0在高度方向(H方向)分为高度为3的数据块1、数据块2和数据块3,分别对应A0的1至3行、4至6行和7至9行,从而使得该数据块与9个卷积核Ki进行卷积后的计算结果为大小为9×3×9,进而可以存储于存储区域S0或存储区域S1。
如前所述,在计算图像数据矩阵A0和卷积核Ki卷积时,在图像数据矩阵A0的第一行前和最后一行后填充值为0的行以及在图像数据矩阵A0的第一列之前和最后一列之后填充值为0的列,从而确保卷积结果与图像数据矩阵A0的大小相同,避免因为卷积丢失图像数据矩阵A0的特征。在本申请实施例中,为确保对图像数据矩阵A0进行分块后的卷积结果与不进行分块计算时相同,需要根据数据块的位置,采用不同的方式填充0行和/或列。
具体地,继续参考图6,在计算的数据块为首个数据块时,例如数据块1时,运算单元211读取数据块1以及该数据块的下一行数据,并在读取的数据的第1行前增加1行值为0的行,以及在读取的数据的第一列前和最后一列后各增加1列值为0的列,也即是说对数据块1进行卷积计算时,实际参与卷积计算的数据A01为图像数据矩阵A0中第1行至第4行的数据在第一行前、增加一行值为0的行、第一例前和最后一列后各增加1列值为0的列后的数据;相似地,在计算的数据块为中间数据块,例如数据块2时,运算单元211读取数据块2以及该数据块的前一行和后一行,并在读取的数据的第一列前和最后一列后各增加1列值为0的列,也即是说运算单元211在对数据块2进行卷积计算时,实际参与卷积计算的数据A02为图像数据矩阵A0中第3行至第7行的数据在第一列前和最后一列后各增加1列值为0的列后的数据;相似地,在计算的数据块为最后一个数据块时,例如数据块3时,运算单元211读取数据块3以及该数据块的前一行数据,并在读取的数据的最后一行后增加1行值为0的行,以及在读取的数据的第一列前和最后一列后各增加1列值为0的列后的数据,也即是说对数据块3进行卷积计算时,实际参与卷积计算的数据A03为图像数据矩阵A0中第6行至第9行的数据在最后一行后增加一行值为0的行、第一例前和最后一列后各增加1列值为0的列后的数据。
进一步,图7根据本申请的一些实施例,示出了对数据块1进行卷积计算的示意图。如图7所示,运算单元211先根据公式(1)对数据A01和卷积核K1进行卷积计算,生成计算结果C1-1并存储至存储区域S0中。计算过程中,根据公式(1)依次取m=1至3,n=1至9,从而计算出数据A01和卷积核K1的卷积结果。例如当公式(1)中取m=1,n=1时,参与计算的A01中的数据即为图示71区域的数据,此时,C1-1(1,1)=12;又例如,当公式(1)中取m=3,n=9时,参与计算的A01中的数据即为图示72区域的数据,此时,C1-1(3,9)=44。在运算单元211完成A01和卷积核K1的卷积计算后,再依次分别计算A01与卷积核K2至K9的卷积,并将结果存储至存储区域S0中,从而形成数据块1的计算层计算结果C1。可以理解,当运算单元211完成对数据A01和卷积核K1至K9的卷积计算后,存储区域S0中即存储有数据块1的计算层计算结果C1。
可以理解,在一些实施例中,运算单元211中可以包括多个进行卷积计算的单元,此时,运算单元211可以同时执行数据A01与多个卷积核的计算,例如当运算单元211包括9个卷积计算单元时,运算单元211可以同时计算数据A01与卷积核K1至K9的卷积,在此不做限定。
参考图8,运算单元211在完成数据块1的卷积计算并将计算结果C1存储至存储区域S0后,即开始对数据块2进行卷积计算,具有过程请参见前述数据块1的计算过程,在此不在赘述,与前述数据块1的不同之处在于,对数据块2的卷积计算结果C2是存储至存储区域S1中。
参考图9,在运算单元211对数据块2进行卷积计算的过程中,DMAC 2101即对存储区域S0中存储的数据块1的卷积计算结果C1进行Depth to Space排序。即排序层13为对C1中W和H相同的大小为1×1×9的矩阵进行重新排序,生成3×3×1的矩阵,并用该矩阵替换数据块1中W和H相同的元素的位置。例如,计算层12的计算结果矩阵中C1(1,1,i),其中i= 1,2,……,9的值分别为12、12、16、11、32、67、47、47、11重新排序后的3×3×1的矩阵中C1-11为:
并且,DMAC 2101用C1-11替换数据块1中W=1、H=1,也即图像数据矩阵A0(1,1)的位置,并存储至系统内存22中。可以理解,DMAC 2101完成对数据块1的卷积计算结果C1的排序层排序,即生成计算结果C1的排序层排序结果R1,也即是数据块1的神经网络计算结果,并且该结果的大小为27×9×1。
在DMAC 2101完成对数据块1的卷积计算结果的排序后,运算单元211即对数据块3中进行卷积计算,参考图10,运算单元211将数据块3对应的进行卷积计算的数据A03分别与卷积核K1至K9进行卷积计算并将计算结果存储至存储区域S0中,具体计算过程参考数据块1的卷积计算过程,在此不再赘述。参考图11,在运算单元211对数据块3进行卷积计算的过程中,DMAC 2101即对存储区域S1中存储的数据块2的卷积计算结果C2进行Depth to Space排序,生成计算结果C2排序结果R2,并将排序结果R2传送到系统内存22中,具体参考前述对数据块1的计算结果C1进行排序的过程,在此不再赘述。在DMAC 2101 完成对数据块2的计算结果C2的Depth to Space排序后,系统内存22中即存储了数据块1和数据块2的神经网络计算结果。
在DMAC 2101完成对数据块2的卷积计算结果的排序后,若运算单元211已经完成对数据块3的卷积计算并将计算结果C3存储在存储区域S0中,参考图11,DMAC 2101则对存储区域S0中存储的数据块3的卷积计算结果进行Depth to Space排序,生成计算结果C3排序结果R3,并将排序结果R3传递至系统内存22中,此时系统内存22中存储了对大小9×9×1为输入数据的神经网络计算结果,可见通过运算后,图像数据的大小变为27×27×1,可见图像数据矩阵的元素在行和列方向的数量都变为原图像数据的3倍,也即是说图像数据的分辨率(像素密度)提高为原始图像的3倍。
通过本申请实施例提供的神经网络模型运行方法,在对包括计算层以及紧随计算层的排序层的神经网络模型进行计算时,通过并行执行计算层的计算和排序层的排序,提高了神经网络模型的运行速度,并且在计算层计算的过程中无需访问系统内存22,减少了访问系统内存22的次数,进一步提升神经网络模型的运行速度。此外,由于在计算层计算的过程中无需将计算层的计算结果传送到系统内存22,减小了对系统内存22的占用,节省了电子设备的带宽,提升了电子设备的性能。
可以理解,前述实施例中以神经网络模型10为超分辨网络为例介绍本申请实施例的技术方案只是一种示例,在一些实施例中,神经网络模型10也可以是具有其他功能的神经网络模型,例如对视屏进行智能剪辑的神经网络模型,智能驾驶场景下对车辆行驶环境进行识别的神经网络模型、语音输入场景下对声音文件进行识别的神经网络模型等、拍摄场景下智能识别拍照场景并调整相机参数的神经网络模型等,在此不做限定。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (11)
1.一种神经网络模型的运行方法,应用于电子设备,所述电子设备包括处理器、设置于处理器外部的第一存储器以及设置于所述处理器内部的第二存储器,其特征在于,所述神经网络模型包括计算层和排序层,其中,所述排序层为不需要对数据进行计算的层,所述排序层包括以下神经网络中的至少一种:深度到空间转换网络、空间到深度转换网络、转置网络、裁切网络、填充网络;
并且所述方法包括:
所述处理器采用所述计算层和排序层对从待处理数据中先后获取的第一数据部分和第二数据部分进行如下处理:
根据所述第二存储器的第一存储区域和所述第二存储器的第二存储区域的大小,确定所述第一数据部分的大小和所述第二数据部分的大小,其中,所述第一数据部分和所述第二数据部分分别来自所述待处理数据中相邻的两个数据块;
获取所述第一数据部分,并通过所述神经网络模型的计算层,对所述第一数据部分进行计算得到第一计算结果,并将所述第一计算结果存储于所述第二存储器的第一存储区域中,其中所述第一数据部分的第一计算结果的数据量小于所述第一存储区域的存储空间,所述第一数据部分包括根据所述第一数据部分在所述待处理数据中的位置所填充的0行和/或列;并且
在将所述第一计算结果存入所述第一存储区域之后,执行如下操作:
通过所述排序层对从所述第一存储区域中读取出的所述第一计算结果进行排序得到第一排序结果,并将所述第一排序结果存储于所述第一存储器中,并且
获取所述第二数据部分,并对所述第二数据部分进行计算得到第二计算结果,并将所述第二计算结果存储于所述第二存储器的第二存储区域中,其中所述第二数据部分的计算结果的数据量小于所述第二存储区域的存储空间,所述第二数据部分包括根据所述第二数据部分在所述待处理数据中的位置所填充的0行和/或列。
2.根据权利要求1所述的方法,其特征在于,在将所述第二计算结果存储于所述第二存储器的第二存储区域后,还包括:
通过所述排序层对从所述第二存储区域中读取出的所述第二计算结果进行排序得到第二排序结果,并将所述第二排序结果存储于所述第一存储器中。
3.根据权利要求1或2所述的方法,其特征在于,所述第一存储区域和所述第二存储区域的大小相同。
4.根据权利要求3所述的方法,其特征在于,所述计算层包括以下神经网络中的至少一种:卷积网络、元素相加网络、元素相乘网络、矩阵元素对应相乘网络。
5.一种运行神经网络模型的电子设备,其特征在于,所述电子设备包括处理器、设置于处理器外部的第一存储器,设置于所述处理器内部设置有第二存储器,其中,
所述处理器采用所述神经网络模型的计算层和排序层对从待处理数据中先后获取的第一数据部分和第二数据部分进行如下处理:
根据所述第二存储器的第一存储区域和所述第二存储器的第二存储区域的大小,确定所述第一数据部分的大小和所述第二数据部分的大小,其中,所述第一数据部分和所述第二数据部分分别来自所述待处理数据中相邻的两个数据块;
获取所述第一数据部分,并通过所述神经网络模型的计算层,对所述第一数据部分进行计算得到第一计算结果,并将所述第一计算结果存储于所述第二存储器的第一存储区域中,其中所述第一数据部分的第一计算结果的数据量小于所述第一存储区域的存储空间,所述第一数据部分包括根据所述第一数据部分在所述待处理数据中的位置所填充的0行和/或列;并且
在将所述第一计算结果存入所述第一存储区域之后,执行如下操作:
通过所述排序层对从所述第一存储区域中读取出的所述第一计算结果进行排序得到第一排序结果,并将所述第一排序结果存储于所述第一存储器中,其中,所述排序层为不需要对数据进行计算的层,所述排序层包括以下神经网络中的至少一种:深度到空间转换网络、空间到深度转换网络、转置网络、裁切网络、填充网络,并且
获取所述第二数据部分,并对所述第二数据部分进行计算得到第二计算结果,并将所述第二计算结果存储于所述第二存储器的第二存储区域中,其中所述第二数据部分的计算结果的数据量小于所述第二存储区域的存储空间,所述第二数据部分包括根据所述第二数据部分在所述待处理数据中的位置所填充的0行和/或列。
6.根据权利要求5所述的电子设备,其特征在于,所述处理器将所述第二计算结果存储于所述第二存储器的第二存储区域后,通过所述排序层对从所述第二存储区域中读取出的所述第二计算结果进行排序得到第二排序结果,并将所述第二排序结果存储于所述第一存储器中。
7.根据权利要求6所述的电子设备,其特征在于,所述处理器还包括直接存储器访问控制器,并且由所述直接存储器访问控制器通过所述排序层对从所述第一存储区域中读取出的所述第一计算结果进行排序得到第一排序结果,并将所述第一排序结果存储于所述第一存储器中;以及
由所述直接存储器访问控制器通过所述排序层对从所述第二存储区域中读取出的所述第二计算结果进行排序得到第二排序结果,并将所述第二排序结果存储于所述第一存储器中。
8.根据权利要求7所述的电子设备,其特征在于,所述处理器还包括运算单元,并且由所述运算单元对所述第一数据部分进行计算得到第一计算结果,并将所述第一计算结果存储于所述第二存储器的第一存储区域中;以及
由所述运算单元对所述第二数据部分进行计算得到第二计算结果,并将所述第二计算结果存储于所述第二存储器的第二存储区域中。
9.根据权利要求5至8任一项所述的电子设备,其特征在于,所述第一存储区域和所述第二存储区域的大小相同。
10.根据权利要求9所述的电子设备,其特征在于,所述计算层包括以下神经网络中的至少一种:卷积网络、元素相加网络、元素相乘网络、矩阵元素对应相乘网络。
11.一种可读介质,其特征在于,所述可读介质中包含有指令,当所述指令被电子设备的处理器执行时使电子设备实现权利要求1至4任一项所述的神经网络模型运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110974281.0A CN113673701B (zh) | 2021-08-24 | 2021-08-24 | 神经网络模型的运行方法、可读介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110974281.0A CN113673701B (zh) | 2021-08-24 | 2021-08-24 | 神经网络模型的运行方法、可读介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113673701A CN113673701A (zh) | 2021-11-19 |
CN113673701B true CN113673701B (zh) | 2024-09-06 |
Family
ID=78545554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110974281.0A Active CN113673701B (zh) | 2021-08-24 | 2021-08-24 | 神经网络模型的运行方法、可读介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113673701B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113835900B (zh) * | 2021-11-26 | 2022-02-22 | 山东产研鲲云人工智能研究院有限公司 | 神经网络计算方法、装置、设备及计算机可读存储介质 |
CN114139693B (zh) * | 2021-12-03 | 2024-08-13 | 安谋科技(中国)有限公司 | 神经网络模型的数据处理方法、介质和电子设备 |
CN114118384B (zh) * | 2021-12-09 | 2024-06-04 | 安谋科技(中国)有限公司 | 神经网络模型的量化方法、可读介质和电子设备 |
CN114936633B (zh) * | 2022-06-15 | 2023-06-30 | 北京爱芯科技有限公司 | 用于转置运算的数据处理单元及图像转置运算方法 |
CN116128046B (zh) * | 2023-04-14 | 2023-07-18 | 杭州国芯科技股份有限公司 | 嵌入式设备的多输入神经网络模型串行块的存储方法 |
CN116627357B (zh) * | 2023-07-21 | 2023-09-29 | 美智纵横科技有限责任公司 | 数据处理方法、深度学习模型的部署方法、装置及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020118608A1 (zh) * | 2018-12-13 | 2020-06-18 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
CN111582465A (zh) * | 2020-05-08 | 2020-08-25 | 中国科学院上海高等研究院 | 基于fpga的卷积神经网络加速处理系统、方法以及终端 |
CN111767986A (zh) * | 2020-06-24 | 2020-10-13 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种基于神经网络的运算方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688853B (zh) * | 2016-08-05 | 2020-01-10 | 中科寒武纪科技股份有限公司 | 一种用于执行神经网络运算的装置及方法 |
CN107992940A (zh) * | 2017-12-12 | 2018-05-04 | 郑州云海信息技术有限公司 | 一种卷积神经网络在fpga上的实现方法及装置 |
CN110991634B (zh) * | 2019-12-04 | 2022-05-10 | 腾讯科技(深圳)有限公司 | 人工智能加速器、设备、芯片及数据处理方法 |
CN112862074A (zh) * | 2021-02-07 | 2021-05-28 | Oppo广东移动通信有限公司 | 模型运行方法、装置、电子设备及存储介质 |
-
2021
- 2021-08-24 CN CN202110974281.0A patent/CN113673701B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020118608A1 (zh) * | 2018-12-13 | 2020-06-18 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
CN111542839A (zh) * | 2018-12-13 | 2020-08-14 | 深圳鲲云信息科技有限公司 | 一种反卷积神经网络的硬件加速方法、装置和电子设备 |
CN111582465A (zh) * | 2020-05-08 | 2020-08-25 | 中国科学院上海高等研究院 | 基于fpga的卷积神经网络加速处理系统、方法以及终端 |
CN111767986A (zh) * | 2020-06-24 | 2020-10-13 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种基于神经网络的运算方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113673701A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113673701B (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
CN111758107B (zh) | 用于基于硬件的池化的系统和方法 | |
EP3855367A1 (en) | Operation accelerator, processing method, and related device | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN114026569A (zh) | 使用脉动阵列的扩张卷积 | |
CN112214727A (zh) | 运算加速器 | |
CN110989920B (zh) | 能量高效的存储器系统和方法 | |
US11610128B2 (en) | Neural network training under memory restraint | |
JP7261226B2 (ja) | 演算処理装置 | |
CN114995782B (zh) | 数据处理方法、装置、设备和可读存储介质 | |
CN111767986A (zh) | 一种基于神经网络的运算方法及装置 | |
CN112396085B (zh) | 识别图像的方法和设备 | |
CN111353598A (zh) | 一种神经网络压缩方法、电子设备及计算机可读介质 | |
US11435941B1 (en) | Matrix transpose hardware acceleration | |
CN111133457A (zh) | 电子设备及其控制方法 | |
US11568227B1 (en) | Neural network inference circuit read controller with multiple operational modes | |
JP2024516514A (ja) | 畳み込みニューラル・ネットワーク実行のための活性化のメモリ・マッピング | |
CN111158757B (zh) | 并行存取装置和方法以及芯片 | |
JP7251354B2 (ja) | 情報処理装置、情報処理プログラム、及び情報処理方法 | |
US11868875B1 (en) | Data selection circuit | |
US11636569B1 (en) | Matrix transpose hardware acceleration | |
CN116051345A (zh) | 图像数据处理方法、装置、计算机设备及可读存储介质 | |
CN115481717A (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 |