CN107451653A - 深度神经网络的计算方法、装置及可读存储介质 - Google Patents
深度神经网络的计算方法、装置及可读存储介质 Download PDFInfo
- Publication number
- CN107451653A CN107451653A CN201710544329.8A CN201710544329A CN107451653A CN 107451653 A CN107451653 A CN 107451653A CN 201710544329 A CN201710544329 A CN 201710544329A CN 107451653 A CN107451653 A CN 107451653A
- Authority
- CN
- China
- Prior art keywords
- map
- current level
- sub
- neural network
- deep neural
- 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
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
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)
- Image Analysis (AREA)
Abstract
本发明公开了一种深度神经网络的计算方法、装置及可读存储介质,所述方法包括:计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;获取当前层次对应的权重数据;根据获取的配置参数及权重数据,对当前层次的输入Map进行计算,获得当前层次的输出Map。本发明通过提前计算深度神经网络中各层的网络参数,从而获得各层的配置参数,在计算到各层时只需从配置文件中获取当前计算层的配置参数就可进行本层的相应计算,从而提高了深度神经网络的计算速度。
Description
技术领域
本发明涉及深度神经网络领域,尤其涉及一种深度神经网络的计算方法、装置及可读存储介质。
背景技术
ML(英文全称Machine Learning,译为:机器学习)和AI(英文全称ArtificialIntelligence,译为:人工智能)是研究如何让计算机去完成需要人的智力才能胜任的工作,是研究如何应用计算机的软硬件来模拟人类某些行为、思想的基本理论、方法和技术。AI是一门多学科交叉的科学,包含自然科学和社学科学交叉,更涉及哲学和认知科学,数学、神经生理学、心理学、计算机科学,信息科学、控制论等众多学科。
近年来,DL(英文全称Deep Learning,译为:深度学习)进展大大推动了ML和AI的技术进步和实际应用。例如,AI为技术核心的应用已经渗透到了众多领域,安防、教育、金融、医疗、交通等等,典型应用包括:远程开户(金融、证券),智能安防、图像识别、自然语言处理、自动驾驶等等。DL是一种含多隐层的,多层感知的深度学习结构,通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。DNN(英文全称Deep Neural Network,译为:深度神经网络)就是一种深度学习模型。DNN还包括CNN(英文全称:Convolutional Neural Networks,译为:卷积神经网络)和RNN(英文全称:Recurrentneural Network,译为:循环神经网络)等网络架构。
深度学习是模拟人脑的思维方式和处理问题的方法,而人脑的计算神经元数量是百亿量级,即使是一个“小型”的DNN网络所需要的计算也非常庞大,而且几乎所有的深度学习网络均运行在CPU(或CPU集群),或GPU(或GPU集群)硬件平台之上,所需要的硬件资源非常巨大,导致成本和功耗都非常大,运行速度缓慢,无法实时处理。由于以上原因使用FPGA或专用芯片的硬件平台就成为深度学习的发展趋势,但是这些平台大都是硬件逻辑器件,结构固化,难以适用于丰富多变的深度神经网络,造成芯片功能单一,而增加或更改网络需要更多研发成本并造成以前芯片无法升级而浪费。
常用软件方案采用顺序处理状态机控制,只适用于软件实现,需要的硬件资源非常巨大,导致成本和功耗都非常大,运行速度缓慢,无法实时处理。常用软件方案移植到嵌入式硬件平台计算处理速度也很缓慢,而且结构固化,难以适用于丰富多变的深度神经网络,造成芯片功能单一,而增加或更改网络需要更多研发成本并造成以前芯片无法升级而浪费。
传统状态机算法通常是计算到达某一层再临时进行本层参数的计算,再进行解释解码等操作才能进行本层计算及后面的状态跳转,往往需要消耗更多的时间和计算资源,也不利于复杂状态机的设计,不利于硬件资源的充分利用,造成成本提高,运算和处理速度缓慢,无法满足很多项目的实时性需求。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种深度神经网络的计算方法、装置及可读存储介质,旨在解决深度神经网络的计算速度缓慢的技术问题。
为实现上述目的,本发明提供一种深度神经网络的计算方法,所述方法包括:
计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;
在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;
获取所述当前层次对应的权重数据;
根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map。
优选地,所述计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中之前,所述方法还包括:
将所述输入Map拆分成第一预设数量的输入子Map;
将所述输入子Map分成第二预设数量组的输入子Map;
相应地,所述根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map,具体包括:
根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map;
将所述当前层次的输出子Map拼接成所述当前层次的所述输出Map。
优选地,所述根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map,具体包括:
从所述第二预设数量组中选取一组作为当前组;
根据所述获取的配置参数及权重数据,对所述当前层次的所述当前组中各子Map并行计算,获得所述当前组中各子Map的所述当前层次的所述输出子Map。
优选地,所述网络参数包括:网络层数、网络层类型、卷积核的参数、卷积核尺寸、Map的尺寸、Map数量、子Map的预设输入存储地址、子Map的预设输出存储地址、激活函数、池化函数和池化尺寸中的至少一项。
优选地,所述将所述当前层次的输出子Map拼接成所述当前层次的输出Map,具体包括:
获取各输出子Map的预设输入存储地址及预设输出存储地址;
根据所述各输出子Map的预设输入存储地址及预设输出存储地址,将所述当前层次的输出子Map进行拼接,以构建成所述当前层次的所述输出Map。
优选地,所述在深度神经网络在进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数之后,所述方法还包括:
根据所述获取的配置参数,配置所述当前层次的硬件资源。
优选地,所述对所述当前层次的输入Map进行计算,具体包括:对所述当前层次的输入Map进行卷积计算。
优选地,所述根据获取的配置参数及权重数据,对当前层次的输入Map进行计算,获得当前层次的输出Map之后,所述方法还包括:
将所述当前层次的输出Map存储至外部存储器或协处理器。
此外,为实现上述目的,本发明还提供一种深度神经网络的计算装置,所述深度神经网络的计算装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的深度神经网络计算程序,所述深度神经网络计算程序配置为实现所述深度神经网络的计算方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有深度神经网络计算程序,所述深度神经网络计算程序被处理器执行时实现所述深度神经网络的计算方法的步骤。
本发明通过计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;获取当前层次对应的权重数据;根据获取的配置参数及权重数据,对当前层次的输入Map进行计算,获得当前层次的输出Map。本发明通过提前计算深度神经网络中各层的网络参数,从而获得各层的配置参数,在计算到各层时只需从配置文件中获取当前计算层的配置参数就可进行本层的相应计算,从而提高了深度神经网络的计算速度。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的深度神经网络的计算装置的结构示意图;
图2为本发明一种深度神经网络的计算方法第一实施例的流程示意图;
图3为本发明一种深度神经网络的计算方法第二实施例的流程示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1是本发明实施例方案涉及的硬件运行环境的深度神经网络的计算装置的结构示意图。
如图1所示,该深度神经网络的计算装置可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对深度神经网络的计算装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及深度神经网络计算程序。
在图1所示的深度神经网络的计算装置中,网络接口1004主要用于连接服务器,与服务器进行数据通信;用户接口1003主要用于接收用户的输入指令;所述深度神经网络的计算装置通过处理器1001调用存储器1005中存储的深度神经网络计算程序,并执行以下操作:
计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;
在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;
获取所述当前层次对应的权重数据;
根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
将所述输入Map拆分成第一预设数量的输入子Map;
将所述输入子Map分成第二预设数量组的输入子Map;
相应地,所述根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map,具体包括:
根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map;
将所述当前层次的输出子Map拼接成所述当前层次的所述输出Map。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
从所述第二预设数量组中选取一组作为当前组;
根据所述获取的配置参数及权重数据,对所述当前层次的所述当前组中各子Map并行计算,获得所述当前组中各子Map的所述当前层次的所述输出子Map。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
网络层数、网络层类型、卷积核的参数、卷积核尺寸、Map的尺寸、Map数量、子Map的预设输入存储地址、子Map的预设输出存储地址、激活函数、池化函数和池化尺寸中的至少一项。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
获取各输出子Map的预设输入存储地址及预设输出存储地址;
根据所述各输出子Map的预设输入存储地址及预设输出存储地址,将所述当前层次的输出子Map进行拼接,以构建成所述当前层次的所述输出Map。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
根据所述获取的配置参数,配置所述当前层次的硬件资源。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
对所述当前层次的输入Map进行卷积计算。
进一步地,处理器1001可以调用存储器1005中存储的深度神经网络计算程序,还执行以下操作:
将所述当前层次的输出Map存储至外部存储器或协处理器。
本实施例通过上述方案,计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;获取当前层次对应的权重数据;根据获取的配置参数及权重数据,对当前层次的输入Map进行计算,获得当前层次的输出Map。本发明通过提前计算深度神经网络中各层的网络参数,从而获得各层的配置参数,在计算到各层时只需从配置文件中获取当前计算层的配置参数就可进行本层的相应计算,从而提高了深度神经网络的计算速度。
基于上述硬件结构,提出本发明一种深度神经网络的计算方法实施例。
参照图2,图2为本发明一种深度神经网络的计算方法第一实施例的流程示意图。
在本实施例中,所述深度神经网络的计算方法包括以下步骤:
步骤S10:计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;
可理解的是,所述各层即深度神经网络的各层,可包括卷积层、池化层和全连接层,卷积层又可以拆分为卷积子层和激活子层等子层。所述网络参数包括:网络层数、各网络子层类型、卷积核的数据、卷积核尺寸、Map的尺寸、输入Map数量、输出Map数量、输入Map存储地址、输出Map存储地址、激活函数类型、池化函数类型和池化尺寸中的至少一项,传统状态机算法通常是计算到达某一层再临时进行本层参数的计算,再进行解释解码等操作才能进行本层计算及后面的状态跳转,本实施例中,将各层的网络参数提前计算出来,所述网络参数都是固定架构性的参数,是可以提前计算出来的,并将计算的各层网络参数作为各层的配置参数存入配置文件,所述配置文件可存入存储器中。
步骤S20:在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;
应理解的是,传统状态机算法通常是计算到达某一层再临时进行本层参数的计算,再进行解释解码等操作才能进行本层计算及后面的状态跳转,本实施例中,各层的网络参数都已经提前计算好,所述各层即深度神经网络的各层,可包括卷积层、池化层和全连接层,卷积层又可以拆分为卷积子层和激活子层等子层。并存储在配置文件中,在深度神经网络进行层次计算时,例如在计算到卷积层时,只需要从所述配置文件中获取所卷积层对应的配置参数,就可以进行卷积层的相应运算。
进一步地,根据所述获取的配置参数,配置所述当前层次的硬件资源。
应理解的是,获取的配置参数即从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的网络参数。为实现深度神经网络的计算,本实施例中,将ARM(全称为Acorn RISC Machine)作为协处理器,将FPGA(Field-Programmable Gate Array,即现场可编程门阵列)作为主处理器为例:系统上电后,ARM将配置文件送至FPGA内的控制状态机,控制状态机根据从配置文件中获取的网络参数将硬件资源配置为对应的子层。子层包括卷积子层和激活子层等子层。
步骤S30:获取所述当前层次对应的权重数据;
可理解的是,所述权重数据存于权重文件中,包括:卷积层权重数据、全连接层权重数据等。ARM通过处理器接口模块将权重数据写入FPGA,FPGA通过DDR(英文全称:DualData Rate,译为:双倍数据速率)接口模块将权重文件和配置文件写入DDR存储器。
步骤S40:根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map。
应理解的是,所述输入Map为图像或语音等待分析数据,ARM通过处理器接口模块将图像或语音等待分析数据传入FPGA,FPGA调取的DDR存储的DNN各子层的权重数据和网络参数,在状态机控制下选择当前层的类型并通过硬件构建起来;再控制各层的输入Map存储地址和输出Map存储地址进行前后连贯的逐层计算,实现整个DNN网络所有层及节点的拼接构建;所述输出Map即为输出总结果,最终将DNN的输出总结果通过处理器接口模块返回给ARM。
需要说明的是,ARM通过该模块实现对FPGA内部模块的寻址和数据传输,所述数据包括:DNN的输入待分析数据,DNN的配置文件,DNN的输出结果数据。其中,所述DNN的配置文件,包括:网络层数、各网络子层类型、每层的卷积核的尺寸,每层的卷积核的数目,每层的输入Map尺寸、每层的输入Map的数目、每层的输出Map的尺寸、每层的输出Map的数目、权值数据(包括各层的卷积核和偏置数据)、权值数据在DDR中的存放地址、各层的输入及输出Map在DDR中的存放地址、激活函数类型和池化尺寸等。
进一步地,所述对所述当前层次的输入Map进行计算,具体包括:对所述当前层次的输入Map进行卷积计算。
应理解的是,深度神经网络可包括卷积层、池化层和全连接层,卷积层又可以拆分为卷积子层和激活子层等子层。所以,所述对当前层次的输入Map进行计算,包括卷积计算,卷积计算之后还可包括激活计算,在卷积、激活计算后还可包括池化计算。在当前层次需要进行卷积、激活和池化计算时,需要在上述三种计算都完成才完成了当前层次的计算。
本实施例通过上述方案,计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;获取当前层次对应的权重数据;根据获取的配置参数及权重数据,对当前层次的输入Map进行计算,获得当前层次的输出Map。本发明通过提前计算深度神经网络中各层的网络参数,从而获得各层的配置参数,在计算到各层时只需从配置文件中获取当前计算层的配置参数就可进行本层的相应计算,从而提高了深度神经网络的计算速度。
参照图3,基于第一实施例提出本发明一种深度神经网络的计算方法第二实施例的流程示意图。
在本实施例中,上述步骤S40之前,还包括如下步骤:
步骤S301:将所述输入Map拆分成第一预设数量的输入子Map;
可理解的是,深度神经网络可包括卷积层、池化层和全连接层,卷积层又可以拆分为卷积子层和激活子层等子层。卷积层和全连接层又根据输入Map的尺寸将所述输入Map拆分成第一预设数量的输入子Map,即将输入的较大Map拆分成多个较小Map,每个小Map作为待分析数据,通过拆分小尺寸Map形成小的运算资源单元,在FPGA等硬件平台可以在这种小单元上灵活设计,如多路复用,用小RAM快速存储和读取等,充分发掘硬件平台的潜力。
步骤S302:将所述输入子Map分成第二预设数量组的输入子Map;
应理解的是,将所述输入子Map分成第二预设数量组的输入子Map,每组包含多个输入子Map,将拆分的第一预设数量的输入子Map进行分组,利于在FPGA等硬件平台上,一次对一组输入子Map同时进行计算,高效有序的完成输入Map的深度神经网络的计算。
相应地,所述步骤S40,具体包括:
步骤S401:根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map;
可理解的是,根据获取的配置参数及权重数据,即当前层的网络参数及权重数据,对当前层次的所述输入子Map按组进行计算,例如:在当前层包括卷积计算、激活计算和池化计算,按组进行计算,即在一组输入子Map完成卷积、激活和池化计算后,获得上述组的当前层次的输出子Map;再选取下一组子Map进行卷积、激活和池化计算,获得上述组的当前层次的输出子Map;当所有组如上所述分批完成卷积、激活和池化计算,分别获得各组的当前层次的输出子Map,当前层次的计算完成。
进一步地,所述网络参数包括:网络层数、网络层类型、卷积核的参数、卷积核尺寸、Map的尺寸、Map数量、子Map的预设输入存储地址、子Map的预设输出存储地址、激活函数、池化函数和池化尺寸中的至少一项。
应理解的是,将所述输入Map拆分成第一预设数量的输入子Map,拆分后,将各输入子Map的输入存储地址及输出存储地址按照其在原来较大输入Map中的对应位置而设置,即所述子Map预设输入存储地址和子Map预设输出存储地址。所述Map数量包括输入Map数量和输出Map数量。
步骤S402:将所述当前层次的输出子Map拼接成所述当前层次的所述输出Map。
应理解的是,所述当前层次的输出子Map即各组输入子Map进行计算,获得的各组当前层次的输出子Map,将上述输出子Map进行拼接,以构建成所述当前层的所述输出Map。
需要说明的是,通过将原来的较大输入Map拆分成多个较小Map,每个Map作为待分析数据,按组进行深度神经网络的计算,获得相应的输出子Map,将上述输出子Map进行拼接后构建的输出Map,与直接将较大输入Map进行深度神经网络的计算所获得的输出Map一致,而通过拆分的方式形成小的运算资源单元,在FPGA等硬件平台可以在这种小单元上灵活设计,如多路复用,用小RAM快速存储和读取等,充分发掘硬件平台的潜力,实现了快速计算的效果,同时降低了硬件资源的耗费。
进一步地,所述步骤401,具体包括:
步骤A:从所述第二预设数量组中选取一组作为当前组;
应理解的是,所述输入子Map分成第二预设数量组的输入子Map,对当前层次的所述输入子Map按组进行计算,通常是按照各组输入子Map在原来的输入Map中的顺序,分批选取一组作为当前组,进行当前层的计算。比如:所述输入子Map拆分成10组,顺序标号1到10,当前层的计算为卷积和激活计算,首先选取1号组进行卷积和激活计算,计算完成,选取2号组进行卷积和激活计算,如此直至100个组都计算完成。
步骤B:根据所述获取的配置参数及权重数据,对所述当前层次的所述当前组中各子Map并行计算,获得所述当前组中各子Map的所述当前层次的所述输出子Map。
可理解的是,所述输入子Map分成第二预设数量组的输入子Map,每组包含多个输入子Map,例如:所述输入子Map拆分成10组,顺序标号1到10组,每组包含100个输入子Map,当前层计算为卷积计算,选取一组作为当前组,假设计算到第三组,根据获取的配置参数及权重数据,对当前层次的上述第三组中各子Map并行进行卷积运算,也就是上述第三组中的100个输入子Map并行卷积计算,并行输出上述第三组中各子Map的当前层次的输出子Map。每组内的各输入子Map进行并行运算,提高了运算效率。
需说明的是,本实施例提出全新而灵活的状态机设计和实现方法,通过前期通过大量计算提前计算确定好各项参数并写入配置文件,从而只需在状态及内部读取各层参数就可以快速完成复杂的DNN网络运算,而且只需更改配置文件可以灵活更改网络架构来适用于各种不同的DNN网络。
所述步骤S402,具体包括:
步骤M:获取各输出子Map的预设输入存储地址及预设输出存储地址;
应理解的是,所述子Map的预设输入存储地址和子Map的预设输出存储地址为按照各输入子Map其在原来较大输入Map中的对应位置而预先设置的。
步骤N:根据所述各输出子Map的预设输入存储地址及预设输出存储地址,将所述当前层次的输出子Map进行拼接,以构建成所述当前层次的所述输出Map。
可理解的是,输入子Map进行计算获得输出子Map,各子Map预设输入存储地址和子Map预设输出存储地址是预先按照各输入子Map其在原来较大输入Map中的对应位置而设置好的,只需按照地址即可将所述当前层次的输出子Map进行拼接,构建成所述当前层次的输出Map。输入子Map与输出子Map只是经过计算后数据发生了变化,但两者的预设输入存储地址和预设输出存储地址是不会发生变化的。
需说明的是,一个子Map的输出地址与其紧邻的下一个子Map的输入地址一致,例如A子Map的输出地址为X,与A子Map紧邻的B子Map的输入地址也为X,根据地址X就能将A子Map与B子Map相连,如上述方式,将所有的输出子Map进行拼接,以构建成所述当前层次的所述输出Map。
步骤S40之后,还包括:
步骤S50:将所述当前层次的输出Map存储至外部存储器或协处理器。
可理解的是,通过神经网络计算获得的当前层次的输出Map,可存储至外部存储器或协处理器,计算获得的当前层次的输出Map可作为深度学习的数据,也可作为其他计算的待分析数据。
本实施例,全新而灵活的状态机设计和实现方法,将DNN网络运算的所有参数在网络算法仿真设计时全部计算出来并存入配置文件,在硬件平台实现时只需在状态机中读取每个网络的配置文件就可以直接进入各层进行计算,并控制状态机的跳转,加速网络运算且灵活适配各种DNN网络。还包括拆分小Map的状态机设计,即较大Map拆分成多个小Map,每个小Map构成一个子层,然后对多个小Map子层并行进行拼接和跳转实现加速运算。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有深度神经网络的计算方法程序,所述深度神经网络计算程序被处理器执行时实现如下操作:
计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;
在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;
获取所述当前层次对应的权重数据;
根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
将所述输入Map拆分成第一预设数量的输入子Map;
将所述输入子Map分成第二预设数量组的输入子Map;
相应地,所述根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map,具体包括:
根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map;
将所述当前层次的输出子Map拼接成所述当前层次的所述输出Map。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
从所述第二预设数量组中选取一组作为当前组;
根据所述获取的配置参数及权重数据,对所述当前层次的所述当前组中各子Map并行计算,获得所述当前组中各子Map的所述当前层次的所述输出子Map。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
所述网络参数包括:网络层数、网络层类型、卷积核的参数、卷积核尺寸、Map的尺寸、Map数量、子Map的预设输入存储地址、子Map的预设输出存储地址、激活函数、池化函数和池化尺寸中的至少一项。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
获取各输出子Map的预设输入存储地址及预设输出存储地址;
根据所述各输出子Map的预设输入存储地址及预设输出存储地址,将所述当前层次的输出子Map进行拼接,以构建成所述当前层次的所述输出Map。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
根据所述获取的配置参数,配置所述当前层次的硬件资源。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
所述对所述当前层次的输入Map进行计算,具体包括:对所述当前层次的输入Map进行卷积计算。
进一步地,所述深度神经网络计算程序被处理器执行时还实现如下操作:
将所述当前层次的输出Map存储至外部存储器或协处理器。
本实施例,全新而灵活的状态机设计和实现方法,将DNN网络运算的所有参数在网络算法仿真设计时全部计算出来并存入配置文件,在硬件平台实现时只需在状态机中读取每个网络的配置文件就可以直接进入各层进行计算,并控制状态机的跳转,加速网络运算且灵活适配各种DNN网络。还包括拆分小Map的状态机设计,即较大Map拆分成多个小Map,每个小Map构成一个子层,然后对多个小Map子层并行进行拼接和跳转实现加速运算。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种深度神经网络的计算方法,其特征在于,所述方法包括以下步骤:
计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中;
在深度神经网络进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数;
获取所述当前层次对应的权重数据;
根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map。
2.如权利要求1所述的方法,其特征在于,所述计算深度神经网络中各层的网络参数,将计算的各层网络参数作为各层的配置参数存入配置文件中之前,所述方法还包括:
将所述输入Map拆分成第一预设数量的输入子Map;
将所述输入子Map分成第二预设数量组的输入子Map;
相应地,所述根据获取的配置参数及权重数据,对所述当前层次的输入Map进行计算,获得所述当前层次的输出Map,具体包括:
根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map;
将所述当前层次的输出子Map拼接成所述当前层次的所述输出Map。
3.如权利要求2所述的方法,其特征在于,所述根据所述获取的配置参数及权重数据,对所述当前层次的所述输入子Map按组进行计算,获得所述当前层次的输出子Map,具体包括:
从所述第二预设数量组中选取一组作为当前组;
根据所述获取的配置参数及权重数据,对所述当前层次的所述当前组中各子Map并行计算,获得所述当前组中各子Map的所述当前层次的所述输出子Map。
4.如权利要求2所述的方法,其特征在于,所述网络参数包括:网络层数、网络层类型、卷积核的参数、卷积核尺寸、Map的尺寸、Map数量、子Map的预设输入存储地址、子Map的预设输出存储地址、激活函数、池化函数和池化尺寸中的至少一项。
5.如权利要求4所述的方法,其特征在于,所述将所述当前层次的输出子Map拼接成所述当前层次的输出Map,具体包括:
获取各输出子Map的预设输入存储地址及预设输出存储地址;
根据所述各输出子Map的预设输入存储地址及预设输出存储地址,将所述当前层次的输出子Map进行拼接,以构建成所述当前层次的所述输出Map。
6.如权利要求1~5中任一项所述的方法,其特征在于,所述在深度神经网络在进行层次计算时,从所述配置文件中获取所述深度神经网络所计算到的当前层次对应的配置参数之后,所述方法还包括:
根据所述获取的配置参数,配置所述当前层次的硬件资源。
7.如权利要求1~5中任一项所述的方法,其特征在于,所述对所述当前层次的输入Map进行计算,具体包括:对所述当前层次的输入Map进行卷积计算。
8.如权利要求1~5中任一项所述的方法,其特征在于,所述根据获取的配置参数及权重数据,对当前层次的输入Map进行计算,获得当前层次的输出Map之后,所述方法还包括:
将所述当前层次的输出Map存储至外部存储器或协处理器。
9.一种深度神经网络的计算装置,其特征在于,所述深度神经网络的计算装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的深度神经网络计算程序,所述深度神经网络计算程序配置为实现如权利要求1至8中任一项所述的深度神经网络的计算方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有深度神经网络的计算方法程序,所述深度神经网络计算程序被处理器执行时实现如权利要求1至8中任一项所述的深度神经网络的计算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710544329.8A CN107451653A (zh) | 2017-07-05 | 2017-07-05 | 深度神经网络的计算方法、装置及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710544329.8A CN107451653A (zh) | 2017-07-05 | 2017-07-05 | 深度神经网络的计算方法、装置及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107451653A true CN107451653A (zh) | 2017-12-08 |
Family
ID=60488281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710544329.8A Pending CN107451653A (zh) | 2017-07-05 | 2017-07-05 | 深度神经网络的计算方法、装置及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107451653A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229664A (zh) * | 2018-01-31 | 2018-06-29 | 北京市商汤科技开发有限公司 | 一种批规范化处理方法及装置、计算机设备 |
CN108320019A (zh) * | 2018-02-06 | 2018-07-24 | 澎峰(北京)科技有限公司 | 用于深度卷积神经网络的卷积计算方法及装置 |
CN108805285A (zh) * | 2018-05-30 | 2018-11-13 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络池化单元设计方法 |
CN109359732A (zh) * | 2018-09-30 | 2019-02-19 | 阿里巴巴集团控股有限公司 | 一种芯片及基于其的数据处理方法 |
CN109597965A (zh) * | 2018-11-19 | 2019-04-09 | 深圳力维智联技术有限公司 | 基于深度神经网络的数据处理方法、系统、终端及介质 |
CN109871939A (zh) * | 2019-01-29 | 2019-06-11 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种图像处理方法及图像处理装置 |
CN109919315A (zh) * | 2019-03-13 | 2019-06-21 | 科大讯飞股份有限公司 | 一种神经网络的前向推理方法、装置、设备及存储介质 |
CN109934336A (zh) * | 2019-03-08 | 2019-06-25 | 江南大学 | 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台 |
CN110032374A (zh) * | 2019-03-21 | 2019-07-19 | 深兰科技(上海)有限公司 | 一种参数提取方法、装置、设备及介质 |
CN110428341A (zh) * | 2019-08-06 | 2019-11-08 | 哈尔滨工业大学软件工程股份有限公司 | 医保费用结算方法、设备及计算机可读存储介质 |
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
CN110826708A (zh) * | 2019-09-24 | 2020-02-21 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN110866603A (zh) * | 2018-12-29 | 2020-03-06 | 中科寒武纪科技股份有限公司 | 数据处理方法和处理器 |
WO2020134829A1 (zh) * | 2018-12-25 | 2020-07-02 | 深圳云天励飞技术有限公司 | 一种神经网络批归一化的优化方法及装置 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN108829610B (zh) * | 2018-04-02 | 2020-08-04 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
CN111738424A (zh) * | 2020-06-29 | 2020-10-02 | 湖南国科微电子股份有限公司 | 神经网络处理方法、装置、电子设备及存储介质 |
CN111788567A (zh) * | 2018-08-27 | 2020-10-16 | 华为技术有限公司 | 一种数据处理设备以及一种数据处理方法 |
CN111832585A (zh) * | 2019-04-16 | 2020-10-27 | 杭州海康威视数字技术股份有限公司 | 图像处理的方法和装置 |
CN112445524A (zh) * | 2019-09-02 | 2021-03-05 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
US20210089911A1 (en) * | 2018-04-18 | 2021-03-25 | Robert Bosch Gmbh | Method, computer system and computer program for controlling an actuator |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000181893A (ja) * | 1998-12-11 | 2000-06-30 | Toshiba Mach Co Ltd | ニューラルネットワークの構成方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及系统 |
-
2017
- 2017-07-05 CN CN201710544329.8A patent/CN107451653A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000181893A (ja) * | 1998-12-11 | 2000-06-30 | Toshiba Mach Co Ltd | ニューラルネットワークの構成方法 |
CN106228240A (zh) * | 2016-07-30 | 2016-12-14 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN106355244A (zh) * | 2016-08-30 | 2017-01-25 | 深圳市诺比邻科技有限公司 | 卷积神经网络的构建方法及系统 |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108229664A (zh) * | 2018-01-31 | 2018-06-29 | 北京市商汤科技开发有限公司 | 一种批规范化处理方法及装置、计算机设备 |
CN108229664B (zh) * | 2018-01-31 | 2021-04-30 | 北京市商汤科技开发有限公司 | 一种批规范化处理方法及装置、计算机设备 |
CN108320019A (zh) * | 2018-02-06 | 2018-07-24 | 澎峰(北京)科技有限公司 | 用于深度卷积神经网络的卷积计算方法及装置 |
CN108320019B (zh) * | 2018-02-06 | 2020-11-24 | 澎峰(北京)科技有限公司 | 用于深度卷积神经网络的卷积计算方法及装置 |
CN108829610B (zh) * | 2018-04-02 | 2020-08-04 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
US20210089911A1 (en) * | 2018-04-18 | 2021-03-25 | Robert Bosch Gmbh | Method, computer system and computer program for controlling an actuator |
CN108805285A (zh) * | 2018-05-30 | 2018-11-13 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络池化单元设计方法 |
CN111788567A (zh) * | 2018-08-27 | 2020-10-16 | 华为技术有限公司 | 一种数据处理设备以及一种数据处理方法 |
CN109359732B (zh) * | 2018-09-30 | 2020-06-09 | 阿里巴巴集团控股有限公司 | 一种芯片及基于其的数据处理方法 |
CN109359732A (zh) * | 2018-09-30 | 2019-02-19 | 阿里巴巴集团控股有限公司 | 一种芯片及基于其的数据处理方法 |
US11361217B2 (en) | 2018-09-30 | 2022-06-14 | Advanced New Technologies Co., Ltd. | Chip and chip-based data processing method |
US11062201B2 (en) | 2018-09-30 | 2021-07-13 | Advanced New Technologies Co., Ltd. | Chip and chip-based data processing method |
CN109597965A (zh) * | 2018-11-19 | 2019-04-09 | 深圳力维智联技术有限公司 | 基于深度神经网络的数据处理方法、系统、终端及介质 |
CN109597965B (zh) * | 2018-11-19 | 2023-04-18 | 深圳力维智联技术有限公司 | 基于深度神经网络的数据处理方法、系统、终端及介质 |
WO2020134829A1 (zh) * | 2018-12-25 | 2020-07-02 | 深圳云天励飞技术有限公司 | 一种神经网络批归一化的优化方法及装置 |
CN110866603A (zh) * | 2018-12-29 | 2020-03-06 | 中科寒武纪科技股份有限公司 | 数据处理方法和处理器 |
CN110866603B (zh) * | 2018-12-29 | 2024-04-16 | 中科寒武纪科技股份有限公司 | 数据处理方法和处理器 |
CN109871939B (zh) * | 2019-01-29 | 2021-06-15 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种图像处理方法及图像处理装置 |
CN109871939A (zh) * | 2019-01-29 | 2019-06-11 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种图像处理方法及图像处理装置 |
CN109934336B (zh) * | 2019-03-08 | 2023-05-16 | 江南大学 | 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台 |
CN109934336A (zh) * | 2019-03-08 | 2019-06-25 | 江南大学 | 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台 |
CN109919315B (zh) * | 2019-03-13 | 2021-10-01 | 科大讯飞股份有限公司 | 一种神经网络的前向推理方法、装置、设备及存储介质 |
CN109919315A (zh) * | 2019-03-13 | 2019-06-21 | 科大讯飞股份有限公司 | 一种神经网络的前向推理方法、装置、设备及存储介质 |
CN110032374A (zh) * | 2019-03-21 | 2019-07-19 | 深兰科技(上海)有限公司 | 一种参数提取方法、装置、设备及介质 |
CN111832585A (zh) * | 2019-04-16 | 2020-10-27 | 杭州海康威视数字技术股份有限公司 | 图像处理的方法和装置 |
CN110428341A (zh) * | 2019-08-06 | 2019-11-08 | 哈尔滨工业大学软件工程股份有限公司 | 医保费用结算方法、设备及计算机可读存储介质 |
CN112445524A (zh) * | 2019-09-02 | 2021-03-05 | 中科寒武纪科技股份有限公司 | 数据处理方法、相关设备及计算机可读介质 |
CN110826708A (zh) * | 2019-09-24 | 2020-02-21 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN110826708B (zh) * | 2019-09-24 | 2022-05-31 | 安徽寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN110689115A (zh) * | 2019-09-24 | 2020-01-14 | 上海寒武纪信息科技有限公司 | 神经网络模型处理方法、装置、计算机设备及存储介质 |
CN111416743B (zh) * | 2020-03-19 | 2021-09-03 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111416743A (zh) * | 2020-03-19 | 2020-07-14 | 华中科技大学 | 一种卷积网络加速器、配置方法及计算机可读存储介质 |
CN111738424A (zh) * | 2020-06-29 | 2020-10-02 | 湖南国科微电子股份有限公司 | 神经网络处理方法、装置、电子设备及存储介质 |
CN111738424B (zh) * | 2020-06-29 | 2023-12-26 | 湖南国科微电子股份有限公司 | 神经网络处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451653A (zh) | 深度神经网络的计算方法、装置及可读存储介质 | |
CN107451654A (zh) | 卷积神经网络的加速运算方法、服务器及存储介质 | |
CN110287480A (zh) | 一种命名实体识别方法、装置、存储介质及终端设备 | |
CN108710941A (zh) | 用于电子设备的神经网络模型的硬加速方法和装置 | |
CN109902798A (zh) | 深度神经网络的训练方法和装置 | |
CN107578098A (zh) | 基于脉动阵列的神经网络处理器 | |
CN109376843A (zh) | 基于fpga的脑电信号快速分类方法、实现方法及装置 | |
CN106997236A (zh) | 基于多模态输入进行交互的方法和设备 | |
CN107016175A (zh) | 适用神经网络处理器的自动化设计方法、装置及优化方法 | |
CN109086722A (zh) | 混合车牌识别方法、装置、电子设备 | |
CN107766506A (zh) | 一种基于层次化注意力机制的多轮对话模型构建方法 | |
CN109710763A (zh) | 一种文本数据的分类方法、装置以及系统 | |
CN111651207B (zh) | 一种神经网络模型运算芯片、方法、装置、设备及介质 | |
EP2825974A1 (en) | Tag-based apparatus and methods for neural networks | |
CN110222184A (zh) | 一种文本的情感信息识别方法及相关装置 | |
CN110377905A (zh) | 语句的语义表示处理方法及装置、计算机设备及可读介质 | |
CN110457718A (zh) | 一种文本生成方法、装置、计算机设备及存储介质 | |
CN109597965A (zh) | 基于深度神经网络的数据处理方法、系统、终端及介质 | |
CN109359732A (zh) | 一种芯片及基于其的数据处理方法 | |
CN108170676B (zh) | 故事创作的方法、系统和终端 | |
CN110457470A (zh) | 一种文本分类模型学习方法及装置 | |
CN110263328A (zh) | 一种学科能力类型标注方法、装置、存储介质及终端设备 | |
CN109857861A (zh) | 基于卷积神经网络的文本分类方法、装置、服务器及介质 | |
CN111651989B (zh) | 命名实体识别方法和装置、存储介质及电子装置 | |
CN110019952A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171208 |