CN109993273A - 卷积神经网络的卷积实现方法及相关产品 - Google Patents

卷积神经网络的卷积实现方法及相关产品 Download PDF

Info

Publication number
CN109993273A
CN109993273A CN201711480827.7A CN201711480827A CN109993273A CN 109993273 A CN109993273 A CN 109993273A CN 201711480827 A CN201711480827 A CN 201711480827A CN 109993273 A CN109993273 A CN 109993273A
Authority
CN
China
Prior art keywords
kernel
block
convolution
data
input
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
Application number
CN201711480827.7A
Other languages
English (en)
Other versions
CN109993273B (zh
Inventor
顾鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN201711480827.7A priority Critical patent/CN109993273B/zh
Publication of CN109993273A publication Critical patent/CN109993273A/zh
Application granted granted Critical
Publication of CN109993273B publication Critical patent/CN109993273B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本公开提供一种卷积神经网络的卷积实现方法及相关产品,该方法包括:将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子块,将卷积的卷积核[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n];读取第一Kernel[n][n],对第一Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],提取该第一Kernel[n][n+y]以及该第一Kernel[n][n+y]对应的输入子块;对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输入子块执行卷积运算得到运算结果。本申请提供的技术方案具有体验度高的优点。

Description

卷积神经网络的卷积实现方法及相关产品
技术领域
本申请涉及人工智能技术领域,具体涉及一种卷积神经网络的卷积实现方 法及相关产品。
背景技术
卷积神经网络(英文:Convolutional Neural Networks,CNN)是为识别二 维形状而特殊设计的一个多层感知器,在深度学习应用上非常广泛。对于应用 于嵌入式产品的CNN网络,受限于处理器能力,有关CNN的应用实时性效果 不佳,而CNN卷积网络中计算量最大的网络层为卷积层,其运算量能占到CNN 所有层计算量的80%~90%左右。现有的卷积层的卷积运算的时间长,导致用户 等待的时间增长,影响客户的体验度。
申请内容
本申请实施例提供了一种卷积神经网络的卷积实现方法及相关产品采用切 割方式,提高特征命中率,复用寄存器,最大化利用存储器单元,更加高效的 实现CNN卷积运算,提高计算速度,具有提高用户体验度的优点。
第一方面,本申请实施例提供一种卷积神经网络芯片,所述卷积神经网络 芯片包括:存储器、数据读取电路、控制电路和卷积计算电路,其中,
所述存储器,用于存储输入数据[H][CI][W]、输出结果[H-2][CO][W-2]和卷 积核[CI][CO][n][n];
控制电路,用于将输入数据[H][CI][W]在H方向上切割成m个输入子块, 将Kernel[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n];
数据读取电路,用于读取CO个Kernel[n][n]中的第一Kernel[n][n],对第 一Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],提取该第一Kernel [n][n+y],以及该第一Kernel[n][n+y]对应的输入数据;
卷积计算电路,用于对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输 入子块执行卷积运算得到运算结果;
所述n的取值范围为大于等于1的整数,所述m的取值范围为大于等于2 的整数。
可选的,所述控制电路,具体用于如n=1,将输入数据[H][CI][W]沿H方 向切割成m个输入子块,所述m=H/4,每次切割沿H方向移动4行,所述输入 子块的尺寸为H方向4行数据;
如n=3,m=H/2,每次切割沿H方向移动2行,所述输入子块的尺寸为 H方向4行数据;
如n>3,m=H/1,每次切割沿H方向移动2行,所述输入子块的尺寸为 H方向4行数据。
可选的,控制电路,具体用于如W的数值大于设定阈值,将该输入子块在 W方向上切割成g个输入子块。
可选的,所述数据读取电路,还用于每读取CO个Kernel[n][n]中的一个 Kernel[n][n],将Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],以及该 Kernel[n][n+y]对应的输入数据发送给卷积计算电路;
卷积计算电路,还用于每接收到Kernel[n][n+y]以及该Kernel[n][n+y]对应 的输入数据执行一次卷积运算得到一个运算结果,执行CI*CO次卷积运算得到 CI*CO个运算结果,将CI*CO个运算结果进行运算得到卷积计算的输出结果 [H-2][CO][W-2]。
第二方面,提供一种卷积神经网络的卷积实现方法,所述方法包括如下步 骤:
将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子块,将卷积的 卷积核[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n];
读取第一Kernel[n][n],对第一Kernel[n][n]的最后添加y列零得到Kernel [n][n+y],提取该第一Kernel[n][n+y]以及该第一Kernel[n][n+y]对应的输入子块;
对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输入子块执行卷积运算 得到运算结果;
所述n的取值范围为大于等于1的整数,所述m的取值范围为大于等于2 的整数。
可选的,所述将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子 块,包括:
如n=1,将输入数据[H][CI][W]沿H方向切割成m个输入子块,所述m=H/4, 每次切割沿H方向移动4行,所述输入子块的尺寸为H方向4行数据;
如n=3,m=H/2,每次切割沿H方向移动2行,所述输入子块的尺寸为 H方向4行数据;
如n>3,m=H/1,每次切割沿H方向移动1行,所述输入子块的尺寸为 H方向n行数据。。
可选的,所述方法将卷积的输入数据[H][CI][W]在H方向上在m个输入子 块之后,还包括:
该输入子块在W方向上切割成g个输入子块。;
可选的,每读取CO个Kernel[n][n]中的一个Kernel[n][n],将Kernel[n][n] 最后y列添加零得到Kernel[n][n+y],将Kernel[n][n+y]以及该Kernel[n][n+y] 对应的输入数据执行一次卷积运算得到一个运算结果,执行CI*CO次卷积运算 得到CI*CO个运算结果,将CI*CO个运算结果进行运算得到卷积计算的输出结 果[H-2][CO][W-2]。
第三方面,提供一种电子装置,所述电子装置包括第一方面提供的卷积神 经网络芯片。
第四方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计 算机程序,其中,所述计算机程序使得计算机执行如第二方面提供的方法。
第五方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计 算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机 执行第二方面提供的方法。
实施本申请实施例,具有如下有益效果:
可以看出,本申请提供的技术方案通过对Kernel最后y列进行填零操作, 这样能够充分利用寄存器的读取数据个数,最大复用寄存器的使用,提高了卷 积运算的效率,所以其具有提高运算速度,减少用户等待时间,提高用户体验 度的优点。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一 些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还 可以根据这些附图获得其他的附图。
图1是一种电子装置的结构示意图。
图1a是一种卷积神经网络芯片的结构示意图。
图2是一种CNN的3x3卷积层示意图。
图3a是一种数据切割示意图。
图3b是另一种数据切割示意图。
图4是本申请实施例公开的一种卷积神经网络的卷积实现方法的流程示意 图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部 的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳 动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第 三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术 语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如 包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出 的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对 于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可 以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不 一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。 本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实 施例相结合。
本申请中的电子装置可以包括:服务器、智能摄像设备、智能手机(如 Android手机、iOS手机、Windows Phone手机等)、平板电脑、掌上电脑、笔记 本电脑、移动互联网设备(MID,Mobile Internet Devices)或穿戴式设备等,上 述电子装置仅是举例,而非穷举,包含但不限于上述电子装置,为了描述的方 便,下面实施例中将上述电子装置称为用户设备(User equipment,UE)、终端 或电子设备。当然在实际应用中,上述用户设备也不限于上述变现形式,例如 还可以包括:智能车载终端、计算机设备等等。
对于上述电子装置,其结构如图1所示,具体的,其可以包括:处理器101、 存储器102、卷积神经网络芯片103,其中处理器101与存储器102以及卷积神 经网络芯片103之间连接,具体的在一种可选的技术方案中,上述卷积神经网 络芯片103可以集成在处理器101内。存储器102可以包括:闪存盘、只读存 储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)等。本发明的技术方案并不局限上述卷积神经网 络芯片103是单独设置还是集成在处理器101内。
该卷积神经网络芯片如图1a所示,所述卷积神经网络芯片包括:寄存器105、 数据读取电路106、控制电路107和卷积计算电路108,其中,
寄存器105,用于存储输入数据[H][CI][W]、输出结果[H-2][CO][W-2]和卷 积核[CI][CO][n][n];
控制电路,用于将输入数据[H][CI][W]在H方向切割成m个输入子块,将 Kernel[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n],;
数据读取电路,用于读取第一Kernel[n][n],对第一Kernel[n][n]的最后添 加y列零得到Kernel[n][n+y],提取该第一Kernel[n][n+y],以及该第一Kernel [n][n+y]对应的输入数据;
卷积计算电路,用于对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输 入子块执行卷积运算得到运算结果;
所述n的取值范围为大于等于1的整数,所述m的取值范围为大于等于2 的整数。
可选的,控制电路,具体用于如n=1,将输入数据[H][CI][W]沿H方向切 割成m个输入子块,所述m=H/4,每次切割沿H方向移动4行,所述输入子块 的尺寸为H方向4行数据;(此种方案每个输入子块没有重叠区域)。
如n=3,m=H/2,每次切割沿H方向移动2行,所述输入子块的尺寸为 H方向4行数据;(此种方案每个输入子块有重叠区域,重叠区域为H方向的2 行数据)。
如n>3,m=H/1,每次切割沿H方向移动1行,所述输入子块的尺寸为H方向n行数据,(此种方案每个输入子块有重叠区域,重叠区域为H方向的 n-1行数据)。
可选的,所述n=3,所述y=1,当然在实际应用中,上述n=5、y=3,此时 该输入数据以及卷积核以定点数据类型表示,即1个定点数据占用16bit。
可选的,控制电路,具体用于如W的数值大于设定阈值,将输入子块在W 方向上切割成g个输入子块分块。
可选的,所述数据读取电路,还用于每读取CO个Kernel[n][n]中的一个 Kernel[n][n],将Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],以及该 Kernel[n][n+y]对应的输入子块发送给卷积计算电路;
卷积计算电路,还用于每接收到Kernel[n][n+y]以及该Kernel[n][n+y]对应 的输入数据执行一次卷积运算得到一个运算结果,执行CI*CO次卷积运算得到 CI*CO个运算结果,将CI*CO个运算结果进行运算得到卷积计算的输出结果 [H-2][CO][W-2]。
图2提供一种CNN的3x3卷积层示意图,输入为3维输入数据[CI][H][W], 卷积核为4维Kernel[CO][CI][3][3],输出为3维输出数据[CO][H-2][W-2],其主 要计算量为CI*CO*H*W*3*3乘加。
现有ARM平台的CNN卷积实现,侧重在Neon Mac的利用率优化上,而 忽视数据存储和DDR存储器之间的数据交互优化上,一般固定某个输入或输出 层,逐层进行卷积累加,而ARM下特征(存储)大小是非常有限的,对于H*W 较大的输入数据和输出数据输出数据,至少需要CI或者CO次数据从DDR到 存储之间的搬移,严重浪费DDR带宽,影响数据的搬运效率,而数据搬运效率 直接影响了卷积的运算,所以ARM平台的CNN卷积实现影响卷积效率,影响用户体验度。
本申请的设计思路是针对卷积输入层和输出层的数据过多,沿着高度H方 向切割为小的子块,调整输入、输出以及卷积kernel的数据格式,保证子块内 卷积的地址连续,整体上提高ARM平台的存储命中率,减少DDR的读写开销; 在卷积循环设计上,充分利用ARMNeon的寄存器,最大复用寄存器的使用, 提高在ARM平台下3x3的卷积效率。
卷积层的输入、输出层数据结构设计:输入数据和输出数据格式定义为 [H][CI/CO][W],最内层为宽度W,其次为通道(channel)个数CI/CO,最外层 为高度H;如果根据输入、输出的高度H来切割,那么可以保证切割出来的tile 数据连续存储。
Kernel数据结构设计:Kernel的原始格式可以为:[CI][CO][n][n],例如 [CI][CO][3][3],[CI][CO][5][5],本申请技术方案的Kernel格式为[CI][CO][3][4], CI在最外层,便于固定输入CI,遍历所有CO的kernel时参数地址连续;最后 一个维度从kernel的3个元素补零扩展到4个元素,便于ARM的Neon格式 (SIMD为4/8)取数。由于参数在CNN的前向计算固定不变,kernel参数格式 可以在CNN的初始化阶段完成格式转换;对于数据读取,其一次读取的数据为 128比特,对于3*3的卷积核,具体的可以为[CI][CO][3][3],一次读取的为4 个数据,因为对于卷积核数据均为浮点数据,对于浮点数据来说,其占用32bit 的,所以对于芯片其一次读取的比特数量为128bit,即对应4个数据,即一次读 取Kernel的4个元素的数据值。
卷积层切割:切割方式图3a,输入数据根据高度每4(即n+1)行切割为1 个输入子块(输入子块),与此相对应,输出数据根据高度每2行切割为1个输 出子块(输出数据子块),这样输入数据与输出数据之间的卷积可以转化为多 个输入子块和输出数据子块之间卷积。如果卷积的子块能缓存到存储中(如果 子块无法缓存到存储,需要在宽度W方向再进行切割),那么整个输入或输出 层只需要在DDR和存储之间交互一遍数据(如果需要在宽度W方向再进行切 割,例如切割1次,切割为中线切割,则需要DDR与存储之间交互二遍数据),这样极大的减少DDR的传输。
另外一方面,每次子块之间卷积均需要遍历一遍kernel参数,对于kernel 参数能完全缓存到存储中,那么不需要重装DDR的kernel参数,影响不大;如 果kernel参数过大,那么该方法会造成多遍DDR的kernel参数读取。
ARM Neon一次卷积输出2行共8个点,参阅图3b(以3*3卷积核为例)。 输入数据上矢量子块r00,r01,r02存放的是第一行的第0~3个元素,第1~4个元 素,第2~5个元素,为了描述的方便,这里将上述元素的命名为:元素r10~r12, r20~r22,r30~r32分别表示第2~第4行的元素;kernel为3x3格式,其中X为补 0扩展,k0~k2表示kernel的3行元素参数,输出数据上子块out0,out1分别表 示输出两行的子块。
卷积公式如下:
Out0=r00*k0[0]+r01*k0[1]+r02*k0[2]
Out0+=r10*k1[0]+r11*k1[1]+r12*k1[2]
Out0+=r20*k2[0]+r21*k2[1]+r22*k2[2]
Out1=r10*k0[0]+r11*k0[1]+r12*k0[2]
Out1+=r20*k1[0]+r21*k1[1]+r22*k1[2]
Out1+=r30*k2[0]+r31*k2[1]+r32*k2[2]
CNN的卷积输入数据和输出数据切割为多个独立的输入子块(根据高度每 4行切割为一个子块)和输出数据子块(根据高度每2行切割为一个子块),具体 参见图3b。最内层循环卷积时,固定输入ci层(输入数据的子块r00~r32计算 开销最大,减少循环计算次数),遍历输入ci层对应的kernel进行卷积,输出到 所有的输出数据上;然后在外层遍历输入层ci循环卷积。这种卷积方法寄存器 基本用满(即寄存器每次提取3*3卷积核的一行数据,最后一个元素值为补零), 寄存器的复用程度最高,且输入子块和kernel的数据地址连续,效率最高。
参阅表1,表1为现有的卷积计算所耗费的时间与本申请采用的技术方案所 耗费的时间的对比表。
表1:
表1为树莓派3(A53)单线程下不同版本的3x3卷积测试结果(100次平 均值),其中开源NCNN的卷积参考的是腾讯NCNN开源代码。如表1所示, 结果显示,针对不同的卷积配置,本申请的卷积相比于腾讯NCCN开源库的卷 积还有20%~30%的性能提升,所以采用本申请提供的技术方案,能够加快卷积 的运算速度,减少功耗以及用户等待时间,所以其具有用户体验度高的优点。
如图4所示,图4为本申请提供的一种卷积神经网络的卷积实现方法,如 图4所示,所述方法包括如下步骤:
步骤S401、将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子块, 将卷积的卷积核[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n];
步骤S402、读取第一Kernel[n][n],对第一Kernel[n][n]的最后添加y列零 得到Kernel[n][n+y],提取该第一Kernel[n][n+y]以及该第一Kernel[n][n+y]对应 的输入子块;
步骤S403、对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输入子块执 行卷积运算得到运算结果;
所述n的取值范围为大于等于1的整数,所述m的取值范围为大于等于2 的整数,其中,H、W、CI、CO均可以为大于一定值的整数,例如,H、W、 CI、CO的取值可以参见上述表1中的值,当然其还可以为其他的值,本申请并 不限制上述值的具体取值,只需该值符合卷积计算的规则即可。
可选的,n=3,所述y=1。当然还可以为n=5,y=3。
可选的,所述将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子 块,包括:
如n=1,将输入数据[H][CI][W]沿H方向切割成m个输入子块,所述m=H/4, 每次切割沿H方向移动4行,所述输入子块的尺寸为H方向4行数据;
如n=3,m=H/2,每次切割沿H方向移动2行,所述输入子块的尺寸为 H方向4行数据;
如n>3,m=H/1,每次切割沿H方向移动1行,所述输入子块的尺寸为 H方向n行数据。。
可选的,所述方法将卷积的输入数据[H][CI][W]在H方向上在m个输入子 块之后,还包括:
该输入子块在W方向上切割成g个输入子块。;
可选的,每读取CO个Kernel[n][n]中的一个Kernel[n][n],将Kernel[n][n] 最后y列添加零得到Kernel[n][n+y],将Kernel[n][n+y]以及该Kernel[n][n+y] 对应的输入数据执行一次卷积运算得到一个运算结果,执行CI*CO次卷积运算 得到CI*CO个运算结果,将CI*CO个运算结果进行运算得到卷积计算的输出结 果[H-2][CO][W-2]。
本申请还提供一种电子装置,该电子装置包括上述卷积神经网络芯片,具 体的,上述电子装置可以为:智能手机、平板电脑、智能车载设备、摄像头、 个人数字助理等等便携式电子设备。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储 用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实 施例中记载的任何一种卷积神经网络的卷积实现方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储 了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计 算机执行如上述方法实施例中记载的任何一种卷积神经网络的卷积实现方法的 部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述 为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的 动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。 其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施 例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详 述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其 它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单 元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例 如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略, 或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可 以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的 形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为 单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者 也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部 单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元 中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的 形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或 使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的 技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部 分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中, 包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设 备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包 括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤 是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存 储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory, 简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁 盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的 原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方 法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在 具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理 解为对本申请的限制。

Claims (11)

1.一种卷积神经网络芯片,其特征在于,所述卷积神经网络芯片包括:存储器、数据读取电路、控制电路和卷积计算电路,其中,
所述存储器,用于存储输入数据[H][CI][W]、输出结果[H-2][CO][W-2]和卷积核[CI][CO][n][n];
控制电路,用于将输入数据[H][CI][W]在H方向上切割成m个输入子块,将Kernel[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n];
数据读取电路,用于读取CO个Kernel[n][n]中的第一Kernel[n][n],对第一Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],提取该第一Kernel[n][n+y],以及该第一Kernel[n][n+y]对应的输入数据;
卷积计算电路,用于对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输入子块执行卷积运算得到运算结果;
所述n的取值范围为大于等于1的整数,所述m的取值范围为大于等于2的整数,所述CI、H、W、CO的取值范围均为大于等于3的整数。
2.根据权利要求1所述的卷积神经网络芯片,其特征在于,
所述控制电路,具体用于如n=1,将输入数据[H][CI][W]沿H方向切割成m个输入子块,所述m=H/4,每次切割沿H方向移动4行,所述输入子块的尺寸为H方向4行数据;
如n=3,m=H/2,每次切割沿H方向移动2行,所述输入子块的尺寸为H方向4行数据;
如n>3,m=H/1,每次切割沿H方向移动1行,所述输入子块的尺寸为H方向n行数据。
3.根据权利要求1所述的卷积神经网络芯片,其特征在于,
控制电路,具体用于如W的数值大于设定阈值,将该输入子块在W方向上切割成g个输入子块。
4.根据权利要求1所述的卷积神经网络芯片,其特征在于,
所述数据读取电路,还用于每读取CO个Kernel[n][n]中的一个Kernel[n][n],将Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],以及该Kernel[n][n+y]对应的输入数据发送给卷积计算电路;
卷积计算电路,还用于每接收到Kernel[n][n+y]以及该Kernel[n][n+y]对应的输入数据执行一次卷积运算得到一个运算结果,执行CI*CO次卷积运算得到CI*CO个运算结果,将CI*CO个运算结果进行运算得到卷积计算的输出结果[H-2][CO][W-2]。
5.一种卷积神经网络的卷积实现方法,其特征在于,所述方法包括如下步骤:
将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子块,将卷积的卷积核[CI][CO][n][n]沿CI方向切割成CO个Kernel[n][n];
读取第一Kernel[n][n],对第一Kernel[n][n]的最后添加y列零得到Kernel[n][n+y],提取该第一Kernel[n][n+y]以及该第一Kernel[n][n+y]对应的输入子块;
对第一Kernel[n][n+y]以及第一Kernel[n][n+y]对应输入子块执行卷积运算得到运算结果;
所述n的取值范围为大于等于1的整数,所述m的取值范围为大于等于2的整数,所述CI、H、W、CO的取值范围均为大于等于3的整数。
6.根据权利要求5所述的方法,其特征在于,所述将卷积的输入数据[H][CI][W]在H方向上切割成m个输入子块,包括:
如n=1,将输入数据[H][CI][W]沿H方向切割成m个输入子块,所述m=H/4,每次切割沿H方向移动4行,所述输入子块的尺寸为H方向4行数据;
如n=3,m=H/2,每次切割沿H方向移动2行,所述输入子块的尺寸为H方向4行数据;
如n>3,m=H/1,每次切割沿H方向移动1行,所述输入子块的尺寸为H方向n行数据。
7.根据权利要求5所述的方法,其特征在于,所述方法将卷积的输入数据[H][CI][W]在H方向上在m个输入子块之后,还包括:
该输入子块在W方向上切割成g个输入子块。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
每读取CO个Kernel[n][n]中的一个Kernel[n][n],将Kernel[n][n]最后y列添加零得到Kernel[n][n+y],将Kernel[n][n+y]以及该Kernel[n][n+y]对应的输入数据执行一次卷积运算得到一个运算结果,执行CI*CO次卷积运算得到CI*CO个运算结果,将CI*CO个运算结果进行运算得到卷积计算的输出结果[H-2][CO][W-2]。
9.一种电子装置,其特征在于,所述电子装置包括如权利要求1-4任意一项所述的卷积神经网络芯片。
10.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求5-8任一项所述的方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如权利要求5-8任一项所述的方法。
CN201711480827.7A 2017-12-29 2017-12-29 卷积神经网络的卷积实现方法及相关产品 Active CN109993273B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711480827.7A CN109993273B (zh) 2017-12-29 2017-12-29 卷积神经网络的卷积实现方法及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711480827.7A CN109993273B (zh) 2017-12-29 2017-12-29 卷积神经网络的卷积实现方法及相关产品

Publications (2)

Publication Number Publication Date
CN109993273A true CN109993273A (zh) 2019-07-09
CN109993273B CN109993273B (zh) 2021-05-11

Family

ID=67109183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711480827.7A Active CN109993273B (zh) 2017-12-29 2017-12-29 卷积神经网络的卷积实现方法及相关产品

Country Status (1)

Country Link
CN (1) CN109993273B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110647978A (zh) * 2019-09-05 2020-01-03 北京三快在线科技有限公司 在卷积神经网络中提取卷积窗的系统和方法
CN110851646A (zh) * 2019-11-18 2020-02-28 陈镜涛 智能园区的工作效率统计方法
CN112446464A (zh) * 2019-08-31 2021-03-05 安徽寒武纪信息科技有限公司 一种神经网络卷积运算方法、装置以及相关产品
CN112633470A (zh) * 2020-12-11 2021-04-09 苏州浪潮智能科技有限公司 优化神经网络卷积残差结构的方法、系统、设备及介质
WO2021135572A1 (zh) * 2019-12-31 2021-07-08 深圳云天励飞技术股份有限公司 神经网络的卷积实现方法、卷积实现装置及终端设备
US11934337B2 (en) 2019-08-31 2024-03-19 Anhui Cambricon Information Technology Co., Ltd. Chip and multi-chip system as well as electronic device and data transmission method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1992939A1 (en) * 2007-05-16 2008-11-19 National University of Ireland, Galway A kernel-based method and apparatus for classifying materials or chemicals and for quantifying the properties of materials or chemicals in mixtures using spectroscopic data.
CN104077233A (zh) * 2014-06-18 2014-10-01 百度在线网络技术(北京)有限公司 单通道卷积层及多通道卷积层处理方法和装置
CN107145939A (zh) * 2017-06-21 2017-09-08 北京图森未来科技有限公司 一种神经网络优化方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1992939A1 (en) * 2007-05-16 2008-11-19 National University of Ireland, Galway A kernel-based method and apparatus for classifying materials or chemicals and for quantifying the properties of materials or chemicals in mixtures using spectroscopic data.
CN104077233A (zh) * 2014-06-18 2014-10-01 百度在线网络技术(北京)有限公司 单通道卷积层及多通道卷积层处理方法和装置
CN107145939A (zh) * 2017-06-21 2017-09-08 北京图森未来科技有限公司 一种神经网络优化方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112446464A (zh) * 2019-08-31 2021-03-05 安徽寒武纪信息科技有限公司 一种神经网络卷积运算方法、装置以及相关产品
US11934337B2 (en) 2019-08-31 2024-03-19 Anhui Cambricon Information Technology Co., Ltd. Chip and multi-chip system as well as electronic device and data transmission method
CN110647978A (zh) * 2019-09-05 2020-01-03 北京三快在线科技有限公司 在卷积神经网络中提取卷积窗的系统和方法
CN110851646A (zh) * 2019-11-18 2020-02-28 陈镜涛 智能园区的工作效率统计方法
CN110851646B (zh) * 2019-11-18 2020-11-24 嵊州市万睿科技有限公司 智能园区的工作效率统计方法
WO2021135572A1 (zh) * 2019-12-31 2021-07-08 深圳云天励飞技术股份有限公司 神经网络的卷积实现方法、卷积实现装置及终端设备
CN112633470A (zh) * 2020-12-11 2021-04-09 苏州浪潮智能科技有限公司 优化神经网络卷积残差结构的方法、系统、设备及介质
CN112633470B (zh) * 2020-12-11 2023-01-06 苏州浪潮智能科技有限公司 优化神经网络卷积残差结构的方法、系统、设备及介质

Also Published As

Publication number Publication date
CN109993273B (zh) 2021-05-11

Similar Documents

Publication Publication Date Title
CN109993273A (zh) 卷积神经网络的卷积实现方法及相关产品
CN109062611B (zh) 神经网络处理装置及其执行向量缩放指令的方法
CN106445471B (zh) 处理器和用于在处理器上执行矩阵乘运算的方法
CN107895191A (zh) 一种信息处理方法及相关产品
CN105393240B (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
CN104915322A (zh) 一种卷积神经网络硬件加速方法及其axi总线ip核
CN105045766B (zh) 基于3072点快速傅里叶变换的数据处理方法及处理器
CN106886544A (zh) 一种数据处理方法及装置
CN109754062A (zh) 卷积扩展指令的执行方法以及相关产品
CN110147249A (zh) 一种网络模型的计算方法及装置
CN108255602A (zh) 任务组合方法及终端设备
CN110088777B (zh) 反卷积实现方法及相关产品
CN107402905A (zh) 基于神经网络的计算方法及装置
CN109844774B (zh) 一种并行反卷积计算方法、单引擎计算方法及相关产品
CN111178513B (zh) 神经网络的卷积实现方法、卷积实现装置及终端设备
CN105894440B (zh) 一种图像多层数据处理方法和装置
CN114138231B (zh) 执行矩阵乘法运算的方法、电路及soc
CN104615697B (zh) 一种网页层次记忆返回方法
CN104461938B (zh) 数据读取方法和装置
CN109993286A (zh) 稀疏神经网络的计算方法及相关产品
CN110059312A (zh) 短语挖掘方法、装置和电子设备
CN110414663A (zh) 神经网络的卷积实现方法及相关产品
CN113128688B (zh) 通用型ai并行推理加速结构以及推理设备
CN104410645B (zh) 数据交互方法、装置及系统
CN114510217A (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