CN111860772A - 一种用于执行人工神经网络pooling运算的装置和方法 - Google Patents
一种用于执行人工神经网络pooling运算的装置和方法 Download PDFInfo
- Publication number
- CN111860772A CN111860772A CN202010614965.5A CN202010614965A CN111860772A CN 111860772 A CN111860772 A CN 111860772A CN 202010614965 A CN202010614965 A CN 202010614965A CN 111860772 A CN111860772 A CN 111860772A
- Authority
- CN
- China
- Prior art keywords
- vector
- kernel
- instruction
- operation module
- posing
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 36
- 238000010304 firing Methods 0.000 claims abstract description 10
- 239000013598 vector Substances 0.000 claims description 113
- 238000011176 pooling Methods 0.000 claims description 39
- 230000008569 process Effects 0.000 claims description 27
- 210000002569 neuron Anatomy 0.000 claims description 25
- 238000012549 training Methods 0.000 claims description 22
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000009825 accumulation Methods 0.000 claims description 8
- 238000012546 transfer Methods 0.000 claims description 2
- 239000010410 layer Substances 0.000 description 33
- 210000002364 input neuron Anatomy 0.000 description 17
- 210000004205 output neuron Anatomy 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 230000006399 behavior Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005481 NMR spectroscopy Methods 0.000 description 1
- 101100283966 Pectobacterium carotovorum subsp. carotovorum outN gene Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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/084—Backpropagation, e.g. using gradient descent
Abstract
本公开提供了一种用于执行人工神经网络pooling运算的装置,包括控制器单元以及运算模块。控制器单元用于将指令译码成控制运算模块行为的控制信号,然后将控制信号发送至运算模块;运算模块用于根据接收到的控制信号完成pooling运算。本公开能解决CPU和GPU运算性能不足和前端译码开销大的问题。
Description
技术领域
本公开涉及人工神经网络,具体地涉及一种用于执行pooling运算的装置和方法。
背景技术
多层人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。
pooling运算是指在神经网络的特征层中,进行局部特征的降采样运算,减少特征层的维度。pooling运算分为两种:maxpooling是指在kernel内,取最大值作为结果;avgpooling是指在kernel内,取平均值作为结果。此处的kernel即pooling核,大小是参数指定的,并根据步长stride在特征层上进行滑动,进行pooling运算,得到结果。
一种支持多层人工神经网络pooling运算的正向运算和反向训练的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来支持上述算法。该方法的缺点之一是单个通用处理器的运算性能较低,无法满足通常的多层人工神经网络运算的性能需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另外,通用处理器需要把多层人工神经网络反向运算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销
另一种支持多层人工神经网络pooling运算的正向运算和反向训练的已知方法是使用图形处理器(GPU)。该方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。由于GPU是专门用来执行图形图像运算以及科学计算的设备,没有对多层人工神经网络运算的专门支持,仍然需要大量的前端译码工作才能执行多层人工神经网络运算,带来了大量的额外开销。另外GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈。另外,GPU只有较小的片上缓存,多层人工神经网络的模型数据(权值)需要反复从片外搬运,片外带宽成为了主要性能瓶颈,同时带来了巨大的功耗开销。
公开内容
本公开的一个方面提供了一种用于执行人工神经网络pooling运算的装置,包括控制器单元以及运算模块,其中:控制器单元用于将该指令译码成控制运算模块行为的微指令(或控制信号),然后将微指令发送至运算模块;运算模块用于根据接收到的微指令完成pooling运算。
本公开的另一个方面提供了一种使用上述装置执行人工神经网络pooling运算的方法。
本公开的另一方面提供了一种使用上述装置执行多层人工神经网络pooling运算的方法。
本公开还提供了一种电子装置,包括以上任一所述的装置。
本公开可以应用于以下场景中(包括但不限于):数据处理装置、机器人、电脑、打印机、扫描仪、电话、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备等各类电子产品;飞机、轮船、车辆等各类交通工具;电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机等各类家用电器;以及包括核磁共振仪、B超、心电图仪等各类医疗设备。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示出了根据本公开实施例的用于执行pooling运算的装置的整体结构的示例框图。
图2示出了根据本公开实施例的用于执行pooling运算的装置中运算模块结构的示例框图。
图3示出了根据本公开实施例的pooling运算的正向运算的过程的示例框图。
图4示出了根据本公开实施例的pooling运算的反向训练的过程的示例框图。
图5示出了根据本公开实施例的pooling运算的正向运算的流程图。
图6示出了根据本公开实施例的pooling运算的反向运算的流程图。
在所有附图中,相同的装置、部件、单元等使用相同的附图标记来表示。
具体实施方式
根据本公开的pooling运算装置所基于的人工神经网络包括两层或者两层以上的多个神经元。对于maxpooling,在正向运算时,在pooling核内依次比较每一个输入向量,取最大值,得到输出向量,若需要反向训练,则同时保存对应的索引向量index;滑动pooling核,循环做上述运算操作,直至本层pooling运算结束。反向训练时,将输入梯度向量按照正向运算时保存的索引向量index,对应输出至相应存储位置,得到输出梯度向量;对于avgpooling,在正向运算时,在pooling核内累加每一个输入向量;然后乘以1/kernel_size,得到输出向量,kernel_size表示pooling核的大小;滑动pooling核,循环做上述运算操作,直至本层pooling运算结束;反向训练时,将输入梯度向量乘以1/kernel_size,对应输出至相应存储位置,得到输出梯度向量。
图1示出了根据本公开实施例的用于执行pooling运算的装置的整体结构的示例框图。如图1所示,该装置包括指令存储单元1、控制器单元2、数据访问单元3和运算模块4。指令存储单元1、控制器单元2、数据访问单元3和运算模块4均可以通过硬件电路(包括但不限于FPGA、CGRA、专用集成电路ASIC、模拟电路和忆阻器等)实现。
指令存储单元1通过数据访问单元3读入指令并缓存读入的指令。
控制器单元2从指令存储单元1中读取指令,将指令译成控制其他模块行为的微指令并发送给其他模块如数据访问单元3和运算模块4等,即,将指令译码成控制运算模块行为的控制信号,然后将控制信号分发至模块。
数据访问单元3能够访存外部地址空间,直接向装置内部的各个存储单元读写数据,完成数据的加载和存储。
所述运算模块用于完成maxpooling运算的求最大值运算,或用于完成avgpooling运算的累加和乘法运算;
图2示出了根据本公开实施例的用于执行pooling运算的装置中运算模块4的结构的示例框图。如图2所示,运算模块4包括运算单元41、数据依赖关系判断单元42和神经元存储单元43。
神经元存储单元43用于缓存运算模块4在计算过程中用到的输入数据和输出数据。运算单元41完成运算模块的各种运算功能。数据依赖关系判断单元42是运算单元41读写神经元存储单元43的端口,同时能够保证对神经元存储单元43中数据的读写不存在一致性冲突。具体地,数据依赖关系判断单元42判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。例如,所有发往数据依赖关系单元42的微指令都会被存入数据依赖关系单元42内部的指令队列里,在该队列中,读指令的读取数据的范围如果与队列位置靠前的写指令写数据的范围发生冲突,则该指令必须等到所依赖的写指令被执行后才能够执行。控制器单元2输出的指令发送给运算单元41和依赖关系判断单元42,来控制其行为。
运算模块4完成pooling运算的正向运算和反向训练过程。其正向运算的过程以人工神经网络pooling层为例,maxpooling过程为:out=max(in),avgpooling过程为:out=avg(in)=Σin*1/kernel_size,其中,out与in是列向量,kernel_size为pooling核kernel的大小,对于每一个输出向量out,都对应的是一组kernel内的输入向量in,通过kernel的在特征层上的滑动,循环完成整个pooling层的pooling运算。其反向训练的过程以人工神经网络pooling层为例,maxpooling过程为:out_gradient=index*in_gradient,avgpooling过程为:out_gradient=in_gradient*1/kernel_size,其中,out_gradient是输出梯度向量,in_gradient是输入梯度向量,index是maxpooling正向运算时,保存的输出神经元向量与输入神经元向量对应的索引向量,kernel_size为pooling核kernel的大小,其中每一个输入梯度向量in_gradient都对应一组输出梯度向量out_gradient。
根据本公开实施例,还提供了在前述装置上执行pooling运算正向运算和反向训练的指令集。指令集中包括CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令和MOVE指令,其中:
CONFIG指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令完成每层人工神经网络的算术逻辑计算;
IO指令实现从外部地址空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间;
NOP指令负责清空当前装至内部所有微指令缓存队列中的微指令,保证NOP指令之前的所有指令全部指令完毕。NOP指令本身不包含任何操作;
JUMP指令负责控制器将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;
MOVE指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。
本公开的执行pooling运算的方法包括如下几个阶段:
对于maxpooling,在正向运算时,由运算模块4依次完成比较每一个输入向量大小,取最大值的操作,得到输出向量,若需要反向训练,则同时保存对应的索引向量;循环读取新的pooling核kernel的输入向量,做上述比较大小的运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。反向训练时,运算模块4根据正向运算时保存的索引向量,通过数据访问单元3将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量;
对于avgpooling,在正向运算时,由运算模块4依次完成累加每一个输入向量;然后在运算模块4中完成乘以1/kernel_size运算,得到输出向量,kernel_size表示pooling核的大小;循环读取新的kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束;反向训练时,运算模块4将输入梯度向量乘以1/kernel_size,通过数据访问单元3将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
图3示出了根据本公开实施例的神经网络pooling层正向运算过程的示例框图。对于avgpooling,在运算模块4中,对该pooling核kernel内的输入神经元向量分别进行累加,然后进行乘法运算,与1/kernel_size进行相乘,得到对应的输出神经元值,所有这些输出神经元值组成最终输出神经元向量,公式描述为:
out=Σin*1/kernel_size,
其中out输出神经元向量、in是输入神经元向量、kernel_size是对应pooling核kernel的大小。根据控制器单元2的控制信号,运算模块4将输入神经元向量[in0,…,inN]暂存在神经元存储单元43中。然后将输入神经元向量进行累加,并在神经元存储单元43中存储中间结果向量。完成对整个kernel的输入神经元的累加后,对中间结果向量进行乘法运算,与1/kernel_size进行相乘,得到对应的输出神经元值。然后循环做下一个kernel的pooling运算,直至本层pooling运算结束。
对于maxpooling,在运算模块4中,依次对该pooling核kernel内的输入神经元向量进行比较大小运算,取最大值,得到对应的输出神经元值,所有这些输出神经元值组成最终输出神经元向量,公式描述为:
out=max(in),
其中out输出神经元向量、in是输入神经元向量。根据控制器单元2的控制信号,运算模块4将输入神经元向量[in0,…,inN]暂存在神经元存储单元43中。然后依次对输入神经元向量进行与中间结果向量比较大小操作,取最大值,并在神经元存储单元43存储中间结果向量,最后得到最后的输出神经元向量[out0,out1,out2,…,outN]。然后循环做下一个kernel的pooling运算,直至本层pooling运算结束。
图4示出了根据本公开实施例的神经网络pooling层反向训练过程的示例框图。计算输出梯度向量的maxpooling过程为out_gradient=index*in_gradient,其中index是maxpooling正向运算时得到的索引向量,其和输入梯度向量in_gradient相乘得到输出梯度向量,以传递梯度;avgpooling过程为out_gradient=1/kernel_size*in_gradient,其中kernel_size是对应的pooling核kernel的大小,其和输入梯度向量in_gradient相乘得到输出梯度向量,以传递梯度。
参考图4所示,in_gradient(图4中的[in0,…,in3])是第n+1层的输出梯度向量,得到第n层的输入梯度向量,该过程在运算模块4中完成,暂存在运算模块4的神经元存储单元43中。然后,输入梯度向量与索引向量index或1/kernel_size相乘得到第n层的输出梯度向量,out_gradient(图4中的[out0,…,out3])。
图5示出根据一个实施例的pooling运算正向运算流程图。该流程图描述利用本公开的装置和指令集实现的一种pooling运算正向运算的过程。
在步骤S1,在指令存储单元1的首地址处预先存入一条IO指令。
在步骤S2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取相应的所有pooling运算指令,并将其缓存在指令存储单元1中。
在步骤S3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取运算模块4需要的所有数据(例如,包括输入神经元向量、插值表、常数表等)至运算模块4的神经元存储单元43。
在步骤S4,控制器单元2接着从指令存储单元读入下一条CONFIG指令,根据译出的微指令,装置配置该层pooling运算需要的各种常数。例如,运算单元41根据微指令里的参数配置单元内部寄存器的值,所述参数例如包括本层计算的精度设置、激活函数的数据(例如本层计算的精度位,avgpooling时pooling核大小的倒数1/kernel_size等)
在步骤S5,根据COMPUTE指令译出的微指令,运算模块4的运算单元41从神经元存储单元43读取输入神经元向量和中间结果向量,完成对输入神经元向量的运算(avgpooling中是累加输入神经元向量,然后与1/kernel_size相乘,maxpooling是比较大小,求得最大值),并将最后的输出神经元向量写回至神经元存储单元43。
在步骤S6,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3将神经元存储单元43中的输出神经元向量存至外部地址空间指定地址,运算结束。
图6是示出根据一个实施例的pooling运算反向训练流程图。该流程图描述利用本公开的装置和指令集实现一种pooling运算反向训练的过程。
在步骤T1,在指令存储单元1的首地址处预先存入一条IO指令。
在步骤T2,运算开始,控制器单元2从指令存储单元1的首地址读取该条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取与该pooling运算反向训练有关的所有指令,并将其缓存在指令存储单元1中。
在步骤T3,控制器单元2接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3从外部地址空间读取运算模块4需要的所有数据至运算模块4的神经元存储单元43,所述数据包括输入梯度向量和maxpooling时需要的索引向量index。
在步骤T4,控制器单元2接着从指令存储单元读入下一条CONFIG指令,运算单元根据译出的微指令里的参数配置运算单元内部寄存器的值,包括该层pooling运算需要的各种常数,avgpooling时pooling核大小的倒数1/kernel_size、本层计算的精度设置、更新权值时的学习率等。
在步骤T5,根据COMPUTE指令译出的微指令,运算模块4的运算单元41从神经元存储单元43读取输入梯度向量和maxpooling时需要的索引向量index,完成乘法运算(avgpooling中是与1/kernel_size相乘,maxpooling是与索引向量index相乘),传递输出梯度向量,得到下一层反向训练的输入梯度向量,将其写回至神经元存储单元43。
在步骤T6,控制器单元接着从指令存储单元读入下一条IO指令,根据译出的微指令,数据访问单元3将神经元存储单元43中的输出梯度向量存至外部地址空间指定地址,运算结束。
对于多层人工神经网络的pooling运算,其实现过程与单层神经网络的pooling运算类似,当上一层人工神经网络执行完毕后,下一层的运算指令会将运算模块中计算出的输出神经元向量或输出梯度向量作为下一层训练的输入神经元向量或输入梯度向量进行如上的计算过程,指令中的权值地址和权值梯度地址也会变更至本层对应的地址。
通过采用用于执行pooling运算的装置和指令集,解决了CPU和GPU运算性能不足,前端译码开销大的问题。有效提高了对多层人工神经网络pooling运算的支持。
通过采用针对pooling运算的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为pooling运算正向运算及反向训练性能瓶颈的问题。
前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。
在前述的说明书中,参考其特定示例性实施例描述了本公开的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本公开的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。
Claims (20)
1.一种用于执行人工神经网络pooling运算的装置,其特征在于,所述装置用于执行pooling运算的指令,所述装置包括控制器单元和运算模块,其中,
所述控制器单元用于将指令译码成控制运算模块行为的控制信号,然后将控制信号发送至运算模块;
所述运算模块用于根据接收到的控制信号完成pooling运算。
2.如权利要求1所述的装置,其特征在于,所述运算模块具体用于完成maxpooling运算的求最大值运算,或用于完成avgpooling运算的累加和乘法运算。
3.如权利要求2所述的装置,其特征在于,对于avgpooling,在正向运算时,运算模块依次完成累加每一个输入向量;然后在运算模块中完成乘以1/kernel_size运算,得到输出向量,kernel_size表示pooling核kernel的大小。
4.如权利要求3所述的装置,其特征在于,对于avgpooling,在正向运算时,运算模块循环读取pooling核kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。
5.如权利要求2所述的装置,其特征在于,对于avgpooling,在反向训练时,运算模块将输入梯度向量乘以1/kernel_size,得到输出梯度向量,kernel_size为pooling核kernel的大小。
6.如权利要求2所述的装置,其特征在于,对于maxpooling,在正向运算时,运算模块依次完成比较每一个输入向量大小,取最大值的操作,得到输出向量;运算模块循环读取pooling核kernel的输入向量,做上述比较大小的运算操作,得到新的kernel的输出向量同时保存每一个输出向量对应的索引向量,直至本层pooling运算结束。
7.如权利要求2所述的装置,其特征在于,对于maxpooling,在反向训练时,运算模块根据正向运算时保存的索引向量,将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
8.如权利要求1-7中任一所述的装置,其特征在于,所述运算模块包括运算单元、数据依赖关系判断单元和神经元存储单元,
所述神经元存储单元用于缓存运算单元在计算过程中用到的输入数据和输出数据;
所述数据依赖关系判断单元是运算单元读写神经元存储单元的端口,同时用于保证对神经元存储单元中数据的读写不存在一致性冲突。
9.如权利要求8所述的装置,其特征在于,所述数据依赖关系判断单元用于判断尚未执行的控制信号与正在执行过程中的控制信号的数据之间是否存在依赖关系,如果不存在,允许该组控制信号立即发射,否则需要等到该条控制信号所依赖的所有控制信号全部执行完成后该组控制信号才允许被发射。
10.如权利要求1所述的装置,其特征在于,还包括指令存储单元和数据访问单元,其中
数据访问单元用于访问外部地址空间,完成数据的加载和存储;
指令存储单元用于通过数据访问单元读入指令并缓存读入的指令。
11.如权利要求1所述的装置,其特征在于,所述指令包括以下至少一种:
CONFIG指令,在每层人工神经网络计算开始前配置当前层计算需要的各种常数;
COMPUTE指令,完成每层人工神经网络的算术逻辑计算;
IO指令,实现从外部地址空间读入计算需要的输入数据以及在计算完成后将输出数据存回至外部地址空间;
NOP指令,用于清空当前装置内部所有控制信号缓存队列中的控制信号,保证NOP指令之前的所有指令全部指令完毕;
JUMP指令,用于执行控制器单元将要从指令存储单元读取的下一条指令地址的跳转,实现控制流的跳转;
MOVE指令,用于将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址。
12.一种应用权利要求1-11任一所述装置执行人工神经网络pooling运算的方法,其特征在于包括:
利用所述控制器单元将指令译码成控制运算模块行为的控制信号,然后将控制信号发送至运算模块;
利用所述运算模块根据接收到的控制信号完成pooling运算。
13.如权利要求12所述的方法,其特征在于,利用所述运算模块具体完成maxpooling运算的求最大值运算,或完成avgpooling运算的累加和乘法运算。
14.如权利要求13所述的方法,其特征在于,对于avgpooling,在正向运算时,利用运算模块依次完成累加每一个输入向量;然后利用运算模块完成乘以1/kernel_size运算,得到输出向量,kernel_size表示pooling核kernel的大小;利用运算模块循环读取pooling核kernel的输入向量,做上述累加、乘法运算操作,得到新的kernel的输出向量,直至本层pooling运算结束。
15.如权利要求13所述的方法,其特征在于,对于avgpooling,在反向训练时,利用运算模块将输入梯度向量乘以1/kernel_size,得到输出梯度向量,kernel_size为pooling核kernel的大小。
16.如权利要求13所述的方法,其特征在于,对于maxpooling,在正向运算时,利用运算模块依次完成比较每一个输入向量大小,取最大值的操作,得到输出向量;利用运算模块循环读取pooling核kernel的输入向量,做上述比较大小的运算操作,得到新的kernel的输出向量同时保存每一个输出向量对应的索引向量,直至本层pooling运算结束。
17.如权利要求13所述的方法,其特征在于,对于maxpooling,在反向训练时,利用运算模块根据正向运算时保存的索引向量,将输入梯度向量对应输出至相应的存储位置,得到输出梯度向量。
18.如权利要求12所述的方法,其特征在于,
利用所述神经元存储单元缓存运算单元在计算过程中用到的输入数据和输出数据;
利用所述数据依赖关系判断单元作为运算单元读写神经元存储单元的端口,同时保证对神经元存储单元中数据的读写不存在一致性冲突。
19.一种执行多层人工神经网络pooling运算的方法,其特征在于,
所述多层人工神经网络中的若干网络层按照如权利要求12至18中任一项所述的方法进行计算。
20.一种电子装置,其特征在于包括权利要求1-11任一所述的用于执行人工神经网络pooling运算的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010614965.5A CN111860772B (zh) | 2016-04-29 | 2016-04-29 | 一种用于执行人工神经网络pooling运算的装置和方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610282148.8A CN107329733B (zh) | 2016-04-29 | 2016-04-29 | 用于执行pooling运算的装置和方法 |
CN202010614965.5A CN111860772B (zh) | 2016-04-29 | 2016-04-29 | 一种用于执行人工神经网络pooling运算的装置和方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610282148.8A Division CN107329733B (zh) | 2016-04-29 | 2016-04-29 | 用于执行pooling运算的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111860772A true CN111860772A (zh) | 2020-10-30 |
CN111860772B CN111860772B (zh) | 2024-01-16 |
Family
ID=60192593
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010614965.5A Active CN111860772B (zh) | 2016-04-29 | 2016-04-29 | 一种用于执行人工神经网络pooling运算的装置和方法 |
CN201610282148.8A Active CN107329733B (zh) | 2016-04-29 | 2016-04-29 | 用于执行pooling运算的装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610282148.8A Active CN107329733B (zh) | 2016-04-29 | 2016-04-29 | 用于执行pooling运算的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN111860772B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002885A (zh) * | 2018-07-24 | 2018-12-14 | 济南浪潮高新科技投资发展有限公司 | 一种卷积神经网络池化单元及池化计算方法 |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140156576A1 (en) * | 2002-03-12 | 2014-06-05 | Knowm Tech, Llc | Memristive neural processor utilizing anti-hebbian and hebbian technology |
US20160092764A1 (en) * | 2011-12-07 | 2016-03-31 | Paul Burchard | Sparse Neural Control |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014203039A1 (en) * | 2013-06-19 | 2014-12-24 | Aselsan Elektronik Sanayi Ve Ticaret Anonim Sirketi | System and method for implementing reservoir computing using cellular automata |
CN104573731B (zh) * | 2015-02-06 | 2018-03-23 | 厦门大学 | 基于卷积神经网络的快速目标检测方法 |
CN105069413B (zh) * | 2015-07-27 | 2018-04-06 | 电子科技大学 | 一种基于深度卷积神经网络的人体姿势识别方法 |
CN105447190B (zh) * | 2015-12-18 | 2019-03-15 | 小米科技有限责任公司 | 基于卷积神经网络的图片检索方法、装置和服务器 |
-
2016
- 2016-04-29 CN CN202010614965.5A patent/CN111860772B/zh active Active
- 2016-04-29 CN CN201610282148.8A patent/CN107329733B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140156576A1 (en) * | 2002-03-12 | 2014-06-05 | Knowm Tech, Llc | Memristive neural processor utilizing anti-hebbian and hebbian technology |
US20160092764A1 (en) * | 2011-12-07 | 2016-03-31 | Paul Burchard | Sparse Neural Control |
CN105488565A (zh) * | 2015-11-17 | 2016-04-13 | 中国科学院计算技术研究所 | 加速深度神经网络算法的加速芯片的运算装置及方法 |
CN105468335A (zh) * | 2015-11-24 | 2016-04-06 | 中国科学院计算技术研究所 | 流水级运算装置、数据处理方法及片上网络芯片 |
Non-Patent Citations (1)
Title |
---|
MATTHEW D.ZEILER,ROB FERGUS: "Stochastic Pooling for Regularization of Deep Convolutional Neural Networks", 《COMPUTER SCIENCE MACHINE LEARNING》, pages 1 - 9 * |
Also Published As
Publication number | Publication date |
---|---|
CN107329733B (zh) | 2020-10-02 |
CN107329733A (zh) | 2017-11-07 |
CN111860772B (zh) | 2024-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310904B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN107704267B (zh) | 一种卷积神经网络运算指令及其方法 | |
CN109375951B (zh) | 一种用于执行全连接层神经网络正向运算的装置和方法 | |
US11922132B2 (en) | Information processing method and terminal device | |
CN109284825B (zh) | 用于执行lstm运算的装置和方法 | |
CN109376861B (zh) | 一种用于执行全连接层神经网络训练的装置和方法 | |
CN109358900B (zh) | 支持离散数据表示的人工神经网络正向运算装置和方法 | |
CN106991478B (zh) | 用于执行人工神经网络反向训练的装置和方法 | |
CN106991476B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
WO2017185336A1 (zh) | 用于执行pooling运算的装置和方法 | |
CN107886166B (zh) | 一种执行人工神经网络运算的装置和方法 | |
WO2017185335A1 (zh) | 一种用于执行batch normalization运算的装置和方法 | |
CN107329733B (zh) | 用于执行pooling运算的装置和方法 | |
CN107341546B (zh) | 一种用于执行batch normalization运算的装置和方法 |
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 |