CN115185482A - 一种基于神经网络的运算方法以及装置 - Google Patents

一种基于神经网络的运算方法以及装置 Download PDF

Info

Publication number
CN115185482A
CN115185482A CN202110358538.XA CN202110358538A CN115185482A CN 115185482 A CN115185482 A CN 115185482A CN 202110358538 A CN202110358538 A CN 202110358538A CN 115185482 A CN115185482 A CN 115185482A
Authority
CN
China
Prior art keywords
image
data
matrix
weight
image data
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
Application number
CN202110358538.XA
Other languages
English (en)
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.)
Canaan Bright Sight Co Ltd
Original Assignee
Canaan Bright Sight 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 Canaan Bright Sight Co Ltd filed Critical Canaan Bright Sight Co Ltd
Priority to CN202110358538.XA priority Critical patent/CN115185482A/zh
Priority to PCT/CN2022/073040 priority patent/WO2022206138A1/zh
Publication of CN115185482A publication Critical patent/CN115185482A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

本申请公开了一种基于神经网络的运算方法以及装置。具体实现方案为:获取原始图像,根据卷积核的尺寸和原始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵,图像矩阵包括多行多列图像数据;针对每个运算周期对应的图像矩阵,多个运算单元根据运算指令并行获取图像数据,对图像数据与预存储的权重数据进行乘积运算,得到中间数据;对多个运算单元输出的中间数据进行求和,得到每个运算周期对应的运算结果;统计运算周期总数内全部的运算结果,得到目标运算结果。单位时间内加快了整体运算速度,简化了读取数据逻辑,降低单个运算单元对数据的带宽需求。可以进行任意尺寸的卷积运算,提高了卷积运算效率,进而提高图像处理速度。

Description

一种基于神经网络的运算方法以及装置
技术领域
本申请涉及深度学习领域,尤其涉及一种基于神经网络的运算方法以 及装置。
背景技术
神经网络涉及的运算包括卷积、反卷积、膨胀卷积以及矩阵乘法等运 算,这些运算的共同点是基础运算都是乘加运算,所以,需要采用一种乘 加阵列来支持这些运算。其中,张量处理器(tensor processing unit,TPU) 是为机器学习定制的乘加阵列芯片,能够降低功耗、加快运算速度。TPU 包括:矩阵处理器,用于负载卷积神经网络,为卷积神经网络处理大量的 乘法和加法运算;统一缓冲区,即寄存器;以及激活单元,具有硬接线激 活功能。目前,在进行运算时,通常利用读取模块从外部存储读取数据, 将数据发送至矩阵乘法单元进行运算。然而,读取模块读取数据之后,需 要对数据进行重新排列,才能满足矩阵乘法单元的运算需求。这种重新排 列的读取方式导致读取逻辑比较复杂,整体运算步骤繁琐,降低运算速度, 进而导致在图像处理任务、语音处理任务等场景下,处理速度降低。
发明内容
本申请实施例提供一种基于神经网络的运算方法以及装置,以解决相 关技术存在的问题,技术方案如下:
第一方面,本申请实施例提供了一种基于神经网络的运算方法,包括:
获取原始图像,根据卷积核的尺寸和所述原始图像的尺寸计算运算周 期总数以及各运算周期对应的图像矩阵,所述图像矩阵包括多行多列图像 数据;
针对每个所述运算周期对应的图像矩阵,多个运算单元根据运算指令 并行获取所述图像数据,对所述图像数据与预存储的权重数据进行乘积运 算,得到中间数据;
对所述多个运算单元输出的中间数据进行求和,得到每个所述运算周 期对应的运算结果;
统计所述运算周期总数内全部的运算结果,得到目标运算结果。
在一种具体实施方式中,还包括:
根据所述卷积核的尺寸确定权重矩阵,所述权重矩阵包括多行多列的 权重数据,所述卷积核的高度与所述权重矩阵的行数相同,所述卷积核的 宽度与所述权重矩阵的列数相同;
所述多个运算单元分别预存储所述权重矩阵中对应行的权重数据。
在一种具体实施方式中,所述针对每个所述运算周期对应的图像矩阵, 多个运算单元根据运算指令并行获取所述图像数据,包括:
针对每个所述运算周期对应的图像矩阵,所述多个运算单元根据所述 运算指令分别获取所述图像矩阵中对应行的图像数据。
在一种具体实施方式中,所述针对每个所述运算周期对应的图像矩阵, 多个运算单元根据运算指令并行获取所述图像数据,包括:
针对当前运算周期对应的图像矩阵,变更每一行图像数据中的其中一 个,使得变更后的图像矩阵为下一个运算周期对应的图像矩阵;
针对所述下一运算周期对应的图像矩阵,所述多个运算单元分别获取 对应行中变更后的图像数据。
在一种具体实施方式中,所述多个运算单元组成运算单元组,所述卷 积核的尺寸包括输入通道数,所述输入通道数与所述运算单元组数相同。
第二方面,本实施例提供了一种基于神经网络的运算装置,包括:
图像矩阵计算模块,用于获取原始图像,根据卷积核的尺寸和所述原 始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵,所述图 像矩阵包括多行多列图像数据;
乘积运算模块,用于针对每个所述运算周期对应的图像矩阵,多个运 算单元根据运算指令并行获取所述图像数据,对所述图像数据与预存储的 权重数据进行乘积运算,得到中间数据;
求和运算模块,用于对所述多个运算单元输出的中间数据进行求和, 得到每个所述运算周期对应的运算结果;
目标运算结果生成模块,用于统计所述运算周期总数内全部的运算结 果,得到目标运算结果。
在一种具体实施方式中,还包括:
权重矩阵确定模块,用于根据所述卷积核的尺寸确定权重矩阵,所述 权重矩阵包括多行多列的权重数据,所述卷积核的高度与所述权重矩阵的 行数相同,所述卷积核的宽度与所述权重矩阵的列数相同;
权重数据存储模块,用于所述多个运算单元分别预存储所述权重矩阵 中对应行的权重数据。
在一种具体实施方式中,所述乘积运算模块包括:
第一数据获取子模块,用于针对每个所述运算周期对应的图像矩阵, 所述多个运算单元根据所述运算指令分别获取所述图像矩阵中对应行的 图像数据。
在一种具体实施方式中,所述乘积运算模块包括:
数据变更子模块,用于针对当前运算周期对应的图像矩阵,变更每一 行图像数据中的其中一个,使得变更后的图像矩阵为下一个运算周期对应 的图像矩阵;
第二数据获取子模块,用于针对所述下一运算周期对应的图像矩阵, 所述多个运算单元分别获取对应行中变更后的图像数据。
在一种具体实施方式中,所述多个运算单元组成运算单元组,所述卷 积核的尺寸包括输入通道数,所述输入通道数与所述运算单元组数相同。
第三方面,提供了一种电子设备,包括:
至少一个处理器;以及与至少一个处理器通信连接的存储器;
其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一 个处理器执行,以使至少一个处理器能够执行上述任一项的方法。
第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介 质,计算机指令用于使计算机执行上述任一项的方法。
上述申请中的一个实施例具有如下优点或有益效果:针对每个运算周 期对应的图像矩阵,多个运算单元并行获取图像数据,并行执行各自对应的 乘法运算,即对图像数据与预存储的权重数据进行乘积运算,得到中间数 据,对多个运算单元输出的中间数据进行求和,得到每个运算周期对应的 运算结果,统计运算周期总数内全部的运算结果,得到目标运算结果。解 决了利用一个运算单元进行卷积运算时,需要对图像数据进行重新排列,导 致读取逻辑复杂、运算速度较差的问题。利用多个运算单元并行执行乘法 运算,使得单位时间内加快了整体运算速度,简化了读取数据逻辑,降低单 个运算单元对数据的带宽需求。可以进行任意尺寸的卷积运算,达到加速 卷积运算的效果,或者可以进行任意大小的矩阵乘法运算,达到加速矩阵 乘法运算的效果,提高了运算效率。在不增加硬件资源的情况下提升执行 效率,卷积运算只需处理一次就可以得到最终显示图像,提高图像处理速 度。
上述可选方式所具有的其他效果将在下文中结合具体实施例加以说 明。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是现有技术中Im2col函数优化卷积运算方法的示意图;
图2是根据本申请一实施例的一种基于神经网络的运算方法的示意图;
图3是根据本申请一实施例的一种运算模块(PU)结构示意图;
图4是根据本申请一实施例的一种运算单元(PE)内部结构示意图;
图5是根据本申请一实施例的一种1*3的卷积运算场景示意图;
图6是根据本申请一实施例的一种基于神经网络的运算装置的结构框 图;
图7是用来实现本申请实施例的一种基于神经网络的运算方法的电子 设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实 施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本 领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和 修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的 描述中省略了对公知功能和结构的描述。
现有技术中,在卷积神经网络学习训练时,通常利用Im2col函数优化 卷积运算。Im2col做的事情就是对于卷积核每一次要处理的小窗,将其展 开到新矩阵的一行(列),新矩阵的列(行)数,就是对于一副输入图像 的卷积运算次数(卷积核滑动次数)。为了计算需要把原始的输入图像数 据重新排列后才送入运算单元,从而进行矩阵乘积运算。如图1所示,假 设卷积核的尺寸为2*2,输入图像尺寸为5*5,通常利用额外的读取模块 读取第一个像素点的数据。读取时,并不是按照存储的顺序123…24进行 读取,而是跳跃性的读取数据,例如,读取第一个像素点的数据:0156, 读取第二个像素点的数据:1267,读取第三个像素点的数据:2378…以此 类推,将输入图像的数据全部读取,并按照读取的顺序重新排列成行,依 次发送至单个运算单元中进行矩阵乘积运算,输出运算结果。单个运算单 元在进行卷积运算时,前述的重新排列的读取方式导致读取逻辑比较复杂, 而且需要多次运算处理才能得到最终显示图像,导致整体运算步骤繁琐, 运算速度降低,进而导致图像处理速度降低。
为了解决上述技术问题,本实施例提供了一种基于神经网络的运算方 法,应用于运算模块(PU,Process Unit)。运算单元(PE,Process Element) 阵列作为运算模块(PU,Process Unit)内部的主要计算单元,其规模的 大小决定了运算模块的计算能力。多个运算单元可以构成运算单元阵列, 运算单元阵列可以是矩阵处理器。运算单元阵列根据控制逻辑模块(ctrl) 发送的运算指令进行工作,使得运算模块中实现神经网络的矩阵乘法、卷积、反卷积、膨胀卷积等涉及乘加的运算。
如图2所示,基于神经网络的运算方法包括如下步骤:
步骤S110:获取原始图像,根据卷积核的尺寸和原始图像的尺寸计算 运算周期总数以及各运算周期对应的图像矩阵,图像矩阵包括多行多列图 像数据;
步骤S120:针对每个运算周期对应的图像矩阵,多个运算单元根据运 算指令并行获取图像数据,对图像数据与预存储的权重数据进行乘积运算, 得到中间数据;
步骤S130:对多个运算单元输出的中间数据进行求和,得到每个运算 周期对应的运算结果;
步骤S140:统计运算周期总数内全部的运算结果,得到目标运算结果。
一种示例中,在图像识别、图像分类、语音识别、语音分类等任务场 景中,可以通过卷积神经网络(Convolutional Neural Network,CNN)的 运算来对原始图像或原始语音进行特征提取。原始图像的数据、原始语音 的数据等可以作为输入特征图(input featuremap),通过卷积神经网络提 取特征数据,特征数据可以包括图像的颜色特征数据、纹理特征数据、形 状特征数据和空间特征数据等,或者声强特征数据、响度特征数据、音高 特征数据等,可以作为输出特征图(output feature map)。原始图像的尺 寸可以包括批(batch)的数值、图像高度(height)的数值、图像宽度(width) 的数值、图像通道数(indepth)的数值。卷积核的尺寸可以包括卷积核高 度(height)的数值、卷积核宽度(width)的数值、输入通道数(in depth) 的数值、输出通道数(out depth)的数值。根据卷积核的尺寸确定权重矩 阵,权重矩阵包括多行多列的权重数据。根据卷积核的尺寸和原始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵,图像矩阵包括多 行多列图像数据。卷积核在原始图像上进行滑窗卷积操作,每次滑窗卷积 操作即为一个运算周期,直至在输入特征图中滑窗结束,计算滑窗次数即 为运算周期总数。所以,运算周期总是由卷积核的尺寸和原始图像的尺寸 共同决定。
一种示例中,如图3所示,PU(运算模块)可以包括24行32列的 PE(运算单元)阵列,来进行神经网络涉及的乘加运算。DM(Data Manager) 数据管理器为PU提供原始图像的数据(输入特征图),根据卷积核的尺 寸和原始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵, 图像矩阵包括多行多列图像数据。DM还写出目标运算结果(输出特征图)。 每个运算周期对应的图像矩阵存储在缓存控制模块(buffer ctrl)中,供每 行的运算单元共享。控制逻辑模块(ctrl)用于发送运算指令至各个PE(运 算单元)中,运算指令包括当前的运算周期。如图4所示,提供了一种PE (运算单元)的内部结构图,用于实现本实施方式提供的运算方法。运算 单元包括权重数据指示单元、权重数据存储单元(权重数据存储单元的存 储空间可以是8*16bit等,可以根据实际情况进行设置)以及乘法器。
具体运算过程:首先,排成一列的多个PE(运算单元)分别预存权 重矩阵中对应行的权重数据,权重矩阵的行数和一列PE(运算单元)的 个数可以相同,一一对应。在每个PE(运算单元)中,权重数据指示单 元根据卷积核的尺寸指示对应的权重数据预存至权重数据存储单元中。然 后,排成一列的多个PE(运算单元)获取运算指令,运算指令中包括第 一个运算周期。在执行运算指令过程中,针对第一个运算周期对应的图像 矩阵,排成一列的多个PE(运算单元)根据运算指令并行获取图像矩阵 中对应行的图像数据。每个运算单元中,乘法器根据获取的图像数据和预 存的权重数据进行乘积运算,得到中间数据,输出的中间数据发送至累加 器中。累加器(accumulator)对每一列PE(运算单元)计算得到的中间数据进行求和,得到第一运算周期对应的运算结果,并将运算结果发送给 DM进行存储。最后,对运算周期进行累计,如果运算周期的累计数并未 达到运算周期总数,则进行下一运算周期的运算过程,具体过程与第一运 算周期的运算过程相似,循环执行运算过程直到运算周期的累计数达到运 算周期总数。如果运算周期的累计数达到了总数,那么将全部的运算周期 中得到的运算结果发送至DM中的结果存储模块中,由DM的输出控制模 块从结果存储模块中提取多个运算结果(输出特征图),将其输出。
在一种具体实施例中,如图5所示,利用运算单元PE0进行1*3的卷 积运算。权重矩阵为1*3的矩阵,权重数据包括w0、w1、w2,预存至运 算单元PE0中的权重数据存储单元。1*4的输入特征图对应的输入矩阵是 1*4的输入矩阵,输入矩阵中的输入图像数据包括d0、d1、d2、d3、d4。 1*3的卷积核对1*4的输入特征图进行滑窗操作,运算周期总数为3,运 算周期t1-t3对应的图像矩阵为[d0、d1、d2],运算周期t4-t6对应的图像 矩阵为[d1、d2、d3],运算周期t7-t9对应的图像矩阵为[d2、d3、d4]。运 算单元PE0获取运算指令,在运算周期t1-t3中,根据运算指令获取d0、 d1、d2,利用PE0中的乘法器,将图像数据d0、d1、d2和对应的权重数 据w0、w1、w2相乘,得到中间数据d0*w0、d1*w1、d2*w2,将这些中 间数据送入累加器,累加得到d0*w0+d1*w1+d2*w2=P0,输出运算周期 t1-t3的运算结果P0。同理,在运算周期t4-t6中,累加器输出运算结果为 d1*w0+d2*w1+d3*w2=P1,在运算周期t7-t9中,累加器输出运算结果为 d2*w0+d3*w1+d4*w2=P2。统计运算周期总数内全部的运算结果,得到目 标运算结果,即输出特征图包括运算结果P0、P1以及P2。
另一具体实施例中,利用运算单元阵列中的一列PE0~PE2进行3*3 卷积运算。对于3*3的卷积运算,权重矩阵是3*3的矩阵:
Figure BDA0003004576960000081
权重数据包括w0~w8,PE0中的权重数据指示单元指示w0~w2预存 至PE0的权重存储单元中,PE1中的权重数据指示单元指示w3~w5预存 至PE1的权重存储单元中,PE2中的权重数据指示单元指示w6~w8预存 至PE2的权重存储单元中。根据5*3输入特征图确定的输入矩阵为
Figure BDA0003004576960000082
3*3卷积核在3*5输入特征图上进行滑窗计算,运算周期总数为3,各个 运算周期对应的图像矩阵为:
Figure BDA0003004576960000083
在第一个运算周期中,PE0获取第一行图像数据d0、d1、d2,并将其 与预存的权重数据w0、w1、w2相乘,得到中间数据d0*w0、d1*w1、d2* w2,并将中间数据发送至累加器中进行累加,累加器输出运算结果为 T0=d0*w0+d1*w1+d2*w2(具体过程参考图4所示的实施方式)。PE1 获取第二行图像数据d6、d7、d8,并将其分别与预存的权重数据w3、w4、 w5相乘,得到中间数据,并将中间数据发送至累加器中进行累加,累加 器输出运算结果为T1=d6*w3+d7*w4+d8*w5。PE2获取第三行图像数据 d11、d12、d13,并将其与预存的权重数据w6、w7、w8相乘,得到中间 数据,并将中间数据发送至累加器中进行累加,累加器输出运算结果为 T2=d11*w6+d12*w7+d13*w8。
在第二个运算周期中,PE0获取第一行特征数据d1、d2、d3,并将其 分别与预存的权重数据w0、w1、w2相乘,得到中间数据,并将中间数据 发送至累加器中进行累加,累加器输出运算结果为T0’=d1*w0+d2*w1+ d3*w2(具体过程参考图4所示的实施方式)。PE1获取第二行图像数据 d7、d8、d9,并将其分别与预存的权重数据w3、w4、w5相乘,得到中间 数据,并将中间数据发送至累加器中进行累加,累加器输出运算结果为T1’=d7*w3+d8*w4+d9*w5。PE2获取第三行图像数据d12、d13、d14, 并将其分别与权重数据w6、w7、w8相乘,得到中间数据,并将中间数据 发送至累加器中进行累加,累加器输出运算结果为T2’=d12*w6+d13* w7+d14*w8。在第三个运算周期中,PE0~PE2进行运算的过程参见上述 第一运算周期、第二运算周期的过程,相类似,累加器输出运算结果包括 T0”=d2*w0+d3*w1+d4*w2,T1”=d8*w3+d9*w4+d10*w5,T2”= d13*w6+d14*w7+d15*w8。统计运算周期总数内全部的运算结果,得到目 标运算结果,即输出特征图包括:T0、T1、T2;T0’、T1’、T2’;T0”、 T1”、T2”。需要注意的是,在每个运算周期中,PE0、PE1以及PE2都是 并行执行各自的乘积运算,提高了运算效率,节省了运算时间。当然,运 算单元的个数和排列方式可以根据实际情况进行适应性的调整。
本实施方式中,针对每个运算周期对应的图像矩阵,多个运算单元并 行获取图像数据,并行执行各自对应的乘法运算,即对图像数据与预存储的 权重数据进行乘积运算,得到中间数据,对多个运算单元输出的中间数据 进行求和,得到每个运算周期对应的运算结果,统计运算周期总数内全部 的运算结果,得到目标运算结果。解决了利用一个运算单元进行卷积运算时, 需要对图像数据进行重新排列,导致读取逻辑复杂、运算速度较差的问题。 利用多个运算单元并行执行乘法运算,使得单位时间内加快了整体运算速 度,简化了读取数据逻辑,降低单个运算单元对数据的带宽需求。可以进 行任意尺寸的卷积运算,达到加速卷积运算的效果,或者可以进行任意大 小的矩阵乘法运算,达到加速矩阵乘法运算的效果,提高了运算效率。在 不增加硬件资源的情况下提升执行效率,卷积运算只需处理一次就可以得 到最终显示图像,提高图像处理速度。
在一种实施方式中,还包括:
步骤S121:根据卷积核的尺寸确定权重矩阵,权重矩阵包括多行多列 的权重数据,卷积核的高度与权重矩阵的行数相同,卷积核的宽度与权重 矩阵的列数相同;
步骤S122:多个运算单元分别预存储权重矩阵中对应行的权重数据。
一种示例中,运算单元PE0进行1*3的卷积运算,那么权重矩阵为 1*3的矩阵,权重数据包括w0、w1、w2。3*3的卷积运算,权重矩阵是3*3的矩阵,此类似,可以进行任何尺寸的卷积运算,扩大了运算范围。由 于在运算单元中设置了权重数据存储单元来预先存储权重数据,使得每个 运算单元在进行卷积运算时,无需重复读取权重数据,从而简化读取逻辑,提高运算速度,节约运算资源。
在一种实施方式中,步骤S120,针对每个运算周期对应的图像矩阵, 多个运算单元根据运算指令并行获取图像数据,包括:
步骤S121:针对每个运算周期对应的图像矩阵,多个运算单元根据运 算指令分别获取图像矩阵中对应行的图像数据。
一种示例中,运算单元阵列中的一列PE0~PE2进行3*3卷积运算过程 中:PE0、PE1以及PE2排成一列,运算指令包括当前的运算周期,如果 当前的运算周期为第一个运算周期时,PE0获取第一行图像数据d0、d1、 d2,PE1获取第二行图像数据d6、d7、d8,PE2获取第三行图像数据d11、 d12、d13。与此类似,可以对任意尺寸的输入特征图进行卷积运算,扩大了运算范围。多个运算单元同时并行获取对应行的图像数据,同时进行卷 积运算,加快了运算速度,提高了运算效率。
在一种实施方式中,步骤S120,针对每个运算周期对应的图像矩阵, 多个运算单元根据运算指令并行获取图像数据,包括:
步骤S122:针对当前运算周期对应的图像矩阵,变更每一行图像数据 中的其中一个,使得变更后的图像矩阵为下一个运算周期对应的图像矩阵;
步骤S123:针对下一运算周期对应的图像矩阵,多个运算单元分别获 取对应行中变更后的图像数据。
一种示例中,当上一个运算周期结束后,进行下一个运算周期时,由DM 变更图像数据,而且只需要变更一个数据即可。例如,利用运算单元阵列中 的一列PE0~PE2进行3*3卷积运算过程中:在第一个运算周期中,PE0 获取第一行图像数据d0、d1、d2,在第二个运算周期中,PE0获取第一行 图像数据d1、d2、d3,在第三个运算周期中,PE0获取第一行图像数据d2、 d3、d4。三个运算周期中,只需要DM中变更其中的一个数据即可,例如, 第一个运算周期结束后,将第一行图像数据d0变更为d3,将变更后的d3 输入至运算单元PE0中即可进行第二个运算周期的卷积运算,运算单元 PE0无需再次读取d1、d2。第二个运算周期结束后,将第一行图像数据d1 变更为d4,将变更后的d3输入至运算单元PE0中即可进行第二个运算周 期的卷积运算,运算单元PE0无需再次读取d2、d3。有效避免了重复读 数,提高了运算速度,节约运算资源。
在一种实施方式中,多个运算单元组成运算单元组,卷积核的尺寸包 括输入通道数,输入通道数与运算单元组数相同。
一种示例中,对于3*3卷积运算,一列3个运算单元PE0~PE2组成1 个运算单元组,1个运算单元组计算得到的输出特征图是1个输入通道。 由于一个PU中的运算单元阵列的高度是24,那么可以同时利用8个运算 单元组(每组3个排成列的运算单元)进行运算,得到的输出特征图是8 个输入通道,即对于一个PU(24行32列的运算单元阵列),针对3*3 卷积运算,可以处理8个输入通道的输入特征图。由于通道数通常是2的 幂次,本实施方式中确定输出通道数为32。
在另一种具体实施方式中,如图6所示,提供了一种基于神经网络的运 算装置,包括:
图像矩阵计算模块110,用于获取原始图像,根据卷积核的尺寸和原 始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵,图像矩 阵包括多行多列图像数据;
乘积运算模块120,用于针对每个运算周期对应的图像矩阵,多个运 算单元根据运算指令并行获取图像数据,对图像数据与预存储的权重数据 进行乘积运算,得到中间数据;
求和运算模块130,用于对多个运算单元输出的中间数据进行求和, 得到每个运算周期对应的运算结果;
目标运算结果生成模块140,用于统计运算周期总数内全部的运算结 果,得到目标运算结果。
在一种具体实施方式中,还包括:
权重矩阵确定模块,用于根据卷积核的尺寸确定权重矩阵,权重矩阵 包括多行多列的权重数据,卷积核的高度与权重矩阵的行数相同,卷积核 的宽度与权重矩阵的列数相同;
权重数据存储模块,用于多个运算单元分别预存储权重矩阵中对应行 的权重数据。
在一种具体实施方式中,乘积运算模块包括:
第一数据获取子模块,用于针对每个运算周期对应的图像矩阵,多个 运算单元根据运算指令分别获取图像矩阵中对应行的图像数据。
在一种具体实施方式中,乘积运算模块包括:
数据变更子模块,用于针对当前运算周期对应的图像矩阵,变更每一 行图像数据中的其中一个,使得变更后的图像矩阵为下一个运算周期对应 的图像矩阵;
第二数据获取子模块,用于针对下一运算周期对应的图像矩阵,多个 运算单元分别获取对应行中变更后的图像数据。
在一种具体实施方式中,多个运算单元组成运算单元组,卷积核的尺 寸包括输入通道数,输入通道数与运算单元组数相同。
本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述, 在此不再赘述。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介 质。
如图7所示,是根据本申请实施例的一种基于神经网络的运算方法的电 子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计 算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型 计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置, 诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算 装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例, 并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图7所示,该电子设备包括:一个或多个处理器701、存储器702,以 及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的 总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。 处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者 存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示图 形用户界面(Graphical User Interface,GUI)的图形信息的指令。在其它实施 方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储 器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图7 中以一个处理器701为例。
存储器702即为本申请所提供的非瞬时计算机可读存储介质。其中,存 储器存储有可由至少一个处理器执行的指令,以使至少一个处理器执行本申 请所提供的一种基于神经网络的运算方法。本申请的非瞬时计算机可读存储 介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的一种 基于神经网络的运算方法。
存储器702作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软 件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的一种基于 神经网络的运算方法对应的程序指令/模块。处理器701通过运行存储在存储 器702中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应 用以及数据处理,即实现上述方法实施例中的一种基于神经网络的运算方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存 储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种 基于神经网络的运算方法的电子设备的使用所创建的数据等。此外,存储器 702可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一 个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中, 存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器 可以通过网络连接至上述电子设备。上述网络的实例包括但不限于互联网、 企业内部网、局域网、移动通信网及其组合。
上述电子设备还可以包括:输入装置703和输出装置704。处理器701、 存储器702、输入装置703和输出装置704可以通过总线或者其他方式连接, 图7中以通过总线连接为例。
输入装置703可接收输入的数字或字符信息,以及产生与上述电子设备 的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、 轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入 装置。输出装置704可以包括显示设备、辅助照明装置(例如,LED)和触 觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显 示器(Liquid Cr7stal Displa7,LCD)、发光二极管(Light Emitting Diode,LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸 屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成 电路系统、专用集成电路(Application Specific Integrated Circuits,ASIC)、 计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以 包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在 包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器 可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、 和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、 该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程 处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/ 或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质” 和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的 任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编 程逻辑装置(programmable logic device,PLD)),包括,接收作为机器可 读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器 指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术, 该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode Ray Tube,阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装 置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入 提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供 给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输 入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如, 作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、 或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的 用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述 的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或 者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数 据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括: 局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN) 和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并 且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客 户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删 除步骤。例如,本申请中记载的各步骤可以并行地执行也可以顺序地执行也 可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果, 本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人 员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子 组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进 等,均应包含在本申请保护范围之内。

Claims (12)

1.一种基于神经网络的运算方法,其特征在于,包括:
获取原始图像,根据卷积核的尺寸和所述原始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵,所述图像矩阵包括多行多列图像数据;
针对每个所述运算周期对应的图像矩阵,多个运算单元根据运算指令并行获取所述图像数据,对所述图像数据与预存储的权重数据进行乘积运算,得到中间数据;
对所述多个运算单元输出的中间数据进行求和,得到每个所述运算周期对应的运算结果;
统计所述运算周期总数内全部的运算结果,得到目标运算结果。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据所述卷积核的尺寸确定权重矩阵,所述权重矩阵包括多行多列的权重数据,所述卷积核的高度与所述权重矩阵的行数相同,所述卷积核的宽度与所述权重矩阵的列数相同;
所述多个运算单元分别预存储所述权重矩阵中对应行的权重数据。
3.根据权利要求2所述的方法,其特征在于,所述针对每个所述运算周期对应的图像矩阵,多个运算单元根据运算指令并行获取所述图像数据,包括:
针对每个所述运算周期对应的图像矩阵,所述多个运算单元根据所述运算指令分别获取所述图像矩阵中对应行的图像数据。
4.根据权利要求2所述的方法,其特征在于,所述针对每个所述运算周期对应的图像矩阵,多个运算单元根据运算指令并行获取所述图像数据,包括:
针对当前运算周期对应的图像矩阵,变更每一行图像数据中的其中一个,使得变更后的图像矩阵为下一个运算周期对应的图像矩阵;
针对所述下一运算周期对应的图像矩阵,所述多个运算单元分别获取对应行中变更后的图像数据。
5.根据权利要求1所述的方法,其特征在于,所述多个运算单元组成运算单元组,所述卷积核的尺寸包括输入通道数,所述输入通道数与所述运算单元组数相同。
6.一种基于神经网络的运算装置,其特征在于,包括:
图像矩阵计算模块,用于获取原始图像,根据卷积核的尺寸和所述原始图像的尺寸计算运算周期总数以及各运算周期对应的图像矩阵,所述图像矩阵包括多行多列图像数据;
乘积运算模块,用于针对每个所述运算周期对应的图像矩阵,多个运算单元根据运算指令并行获取所述图像数据,对所述图像数据与预存储的权重数据进行乘积运算,得到中间数据;
求和运算模块,用于对所述多个运算单元输出的中间数据进行求和,得到每个所述运算周期对应的运算结果;
目标运算结果生成模块,用于统计所述运算周期总数内全部的运算结果,得到目标运算结果。
7.根据权利要求6所述的装置,其特征在于,还包括:
权重矩阵确定模块,用于根据所述卷积核的尺寸确定权重矩阵,所述权重矩阵包括多行多列的权重数据,所述卷积核的高度与所述权重矩阵的行数相同,所述卷积核的宽度与所述权重矩阵的列数相同;
权重数据存储模块,用于所述多个运算单元分别预存储所述权重矩阵中对应行的权重数据。
8.根据权利要求7所述的装置,其特征在于,所述乘积运算模块包括:
第一数据获取子模块,用于针对每个所述运算周期对应的图像矩阵,所述多个运算单元根据所述运算指令分别获取所述图像矩阵中对应行的图像数据。
9.根据权利要求7所述的装置,其特征在于,所述乘积运算模块包括:
数据变更子模块,用于针对当前运算周期对应的图像矩阵,变更每一行图像数据中的其中一个,使得变更后的图像矩阵为下一个运算周期对应的图像矩阵;
第二数据获取子模块,用于针对所述下一运算周期对应的图像矩阵,所述多个运算单元分别获取对应行中变更后的图像数据。
10.根据权利要求6所述的装置,其特征在于,所述多个运算单元组成运算单元组,所述卷积核的尺寸包括输入通道数,所述输入通道数与所述运算单元组数相同。
11.一种电子设备,其特征在于,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-5中任一项所述的方法。
CN202110358538.XA 2021-04-02 2021-04-02 一种基于神经网络的运算方法以及装置 Pending CN115185482A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110358538.XA CN115185482A (zh) 2021-04-02 2021-04-02 一种基于神经网络的运算方法以及装置
PCT/CN2022/073040 WO2022206138A1 (zh) 2021-04-02 2022-01-20 一种基于神经网络的运算方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110358538.XA CN115185482A (zh) 2021-04-02 2021-04-02 一种基于神经网络的运算方法以及装置

Publications (1)

Publication Number Publication Date
CN115185482A true CN115185482A (zh) 2022-10-14

Family

ID=83457897

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110358538.XA Pending CN115185482A (zh) 2021-04-02 2021-04-02 一种基于神经网络的运算方法以及装置

Country Status (2)

Country Link
CN (1) CN115185482A (zh)
WO (1) WO2022206138A1 (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5912673A (en) * 1995-11-27 1999-06-15 Sun Microsystems, Inc. Graphical image convolution using multiple pipelines
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
CN108108809B (zh) * 2018-03-05 2021-03-02 山东领能电子科技有限公司 一种针对卷积神经元网络进行推理加速的硬件架构及其工作方法
CN109447085A (zh) * 2018-09-07 2019-03-08 西安电子科技大学 一种模板卷积运算方法
CN111831254A (zh) * 2019-04-15 2020-10-27 阿里巴巴集团控股有限公司 图像处理加速方法、图像处理模型存储方法及对应装置
US11726950B2 (en) * 2019-09-28 2023-08-15 Intel Corporation Compute near memory convolution accelerator
CN111047008B (zh) * 2019-11-12 2023-08-01 天津大学 一种卷积神经网络加速器及加速方法
CN110991631A (zh) * 2019-11-28 2020-04-10 福州大学 一种基于fpga的神经网络加速系统
CN111797982A (zh) * 2020-07-31 2020-10-20 北京润科通用技术有限公司 基于卷积神经网络的图像处理系统

Also Published As

Publication number Publication date
WO2022206138A1 (zh) 2022-10-06

Similar Documents

Publication Publication Date Title
CN111275190B (zh) 神经网络模型的压缩方法及装置、图像处理方法及处理器
CN111325332B (zh) 卷积神经网络的处理方法和装置
CN111738446A (zh) 深度学习推理引擎的调度方法、装置、设备和介质
CN115880132B (zh) 图形处理器、矩阵乘法任务处理方法、装置及存储介质
CN111524166A (zh) 视频帧的处理方法和装置
CN110706147B (zh) 图像处理的环境确定方法、装置、电子设备和存储介质
CN110569972A (zh) 超网络的搜索空间构建方法、装置以及电子设备
CN111967297A (zh) 图像的语义分割方法、装置、电子设备及介质
CN112446574B (zh) 产品评估方法、装置、电子设备及存储介质
CN111694648B (zh) 一种任务调度方法、装置以及电子设备
CN111696134B (zh) 一种目标检测方法、装置以及电子设备
CN112329919B (zh) 模型训练方法及装置
CN112634401B (zh) 一种平面轨迹绘制方法、装置、设备及存储介质
CN111966767B (zh) 轨迹热力图生成方法、装置、电子设备和存储介质
JP2022552046A (ja) ドット積演算実現方法、装置、電子機器、及び記憶媒体
CN111275803B (zh) 3d模型渲染方法、装置、设备和存储介质
CN115185482A (zh) 一种基于神经网络的运算方法以及装置
CN111339462A (zh) 一种组件渲染方法、装置、服务器、终端和介质
CN111461340B (zh) 权重矩阵的更新方法、装置及电子设备
CN112036561B (zh) 数据处理方法、装置、电子设备及存储介质
US20240185042A1 (en) Operation method and apparatus based on neural network
CN112114874B (zh) 数据处理方法、装置、电子设备和存储介质
CN112560928A (zh) 负样本挖掘方法、装置、电子设备及存储介质
CN112101284A (zh) 图像识别方法、图像识别模型的训练方法、装置及系统
CN111027704B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40083020

Country of ref document: HK