CN109146069B - 运算装置、运算方法和芯片 - Google Patents

运算装置、运算方法和芯片 Download PDF

Info

Publication number
CN109146069B
CN109146069B CN201710456759.4A CN201710456759A CN109146069B CN 109146069 B CN109146069 B CN 109146069B CN 201710456759 A CN201710456759 A CN 201710456759A CN 109146069 B CN109146069 B CN 109146069B
Authority
CN
China
Prior art keywords
characteristic diagram
input
neuron
output
unit
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
Application number
CN201710456759.4A
Other languages
English (en)
Other versions
CN109146069A (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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201710456759.4A priority Critical patent/CN109146069B/zh
Priority to CN201910474387.7A priority patent/CN110175673B/zh
Priority to EP19214015.0A priority patent/EP3657399A1/en
Priority to EP19214007.7A priority patent/EP3657340A1/en
Priority to EP18806558.5A priority patent/EP3637325A4/en
Priority to CN201880002821.5A priority patent/CN109478251B/zh
Priority to EP19214010.1A priority patent/EP3657398A1/en
Priority to PCT/CN2018/088033 priority patent/WO2018214913A1/zh
Publication of CN109146069A publication Critical patent/CN109146069A/zh
Priority to US16/699,029 priority patent/US11710041B2/en
Priority to US16/699,049 priority patent/US20200134460A1/en
Priority to US16/699,046 priority patent/US11727276B2/en
Priority to US16/699,055 priority patent/US20200097828A1/en
Priority to US16/699,032 priority patent/US11907844B2/en
Priority to US16/699,027 priority patent/US20200097826A1/en
Priority to US16/699,051 priority patent/US20220335299A9/en
Application granted granted Critical
Publication of CN109146069B publication Critical patent/CN109146069B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/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/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/454Vector or matrix data

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 Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

本公开提供了一种运算装置,包括:筛选单元,用于根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算得到该输出神经元的特征图和与之对应的权值,并将结果输出至运算单元;和/或用于根据输出神经元与输入神经元组成的特征图中每行/列的连接状态数组,筛选出用于计算得到该输出神经元的特征图行/列,以及与之对应的权值行/列,并将所得结果输出至运算单元;以及运算单元,根据指令对筛选单元输出的数据执行相应的支持结构裁剪的人工神经网络运算,得到输出神经元。本公开避免了将所有输入神经元和权值都参与网络运算造成的运算量冗余和访存冗余,解决了CPU和GPU运算性能不足,前端译码开销大的问题。

Description

运算装置、运算方法和芯片
技术领域
本公开属于数据处理技术领域,涉及一种运算装置、运算方法和芯片。
背景技术
人工神经网络(artificial neural network,ANN),简称神经网络(neuralnetwork,NN),是一种模仿生物神经网络的结构和功能的数学模型或运算模型。人工神经网络在诸多领域有着广泛的应用,如图像识别、计算机视觉、语音识别、自然语言处理等领域,并在这些领域取得了十分优秀的成果。
随着神经网络的发展,其网络框架逐渐庞大,网络参数逐渐增多,其运算密集性和存储密集性的特征逐渐显著,例如,基于caffe的网络架构,GoogLeNet Caffemodel大小约为50MB,AlexNet Caffemodel和ResNet-152 Caffemodel大小约为230MB,而VGG-16Caffemodel更是超过500MB大小,因此建立一个高效率、低冗余的神经网络非常重要。
目前神经网络的发展主要局限于以下两个方面,从硬件方面来说,人工神经网络的运算密集性和存储密集性导致了运行人工神经网络对于硬件设备的要求很高,目前利用通用处理器(CPU)或图形处理器(GPU)来进行人工神经网络的运算仍然十分吃力,导致前端译码开销大。以GPU为例,由于GPU只有较小的片上缓存,因此,神经网络在运算的时候,网络模型数据需要反复从片外搬运,片外带宽成为主要的一个性能瓶颈,大量的时间耗费在数据传递上,带来巨大的功耗;从算法方面来说,对于密集型运算来说,访存量很大,算法的设计优劣决定该神经网络的效率。因此,如何设计一种高效的人工神经网络,实现有效输出,减小运算量和访存量,成为人工神经网络发展亟需解决的技术问题。
发明内容
(一)要解决的技术问题
本公开提供了运算装置、运算方法和芯片,以至少部分解决以上所提出的技术问题。
(二)技术方案
根据本公开的一个方面,提供了一种运算装置,包括:筛选单元400,用于根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算得到该输出神经元的特征图和与之对应的权值,并将结果输出至运算单元600;和/或用于根据输出神经元与输入神经元组成的特征图中每行的连接状态数组,筛选出用于计算得到该输出神经元的特征图行,以及与之对应的权值行,并将结果输出至运算单元600;和/或用于根据输出神经元与输入神经元组成的特征图中每列的连接状态数组,筛选出用于计算得到该输出神经元的特征图列,以及与之对应的权值列,并将所得结果输出至运算单元600;以及运算单元600,根据指令对筛选单元400输出的数据结果执行相应的支持结构裁剪的人工神经网络运算,得到输出神经元。
在本公开的一个实施例中,筛选单元400的筛选过程包括:对于权值未经离线筛选的情况,根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算的特征图及与之对应的权值,然后将筛选后的特征图及与之对应的权值输出至运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出用于计算的特征图行/列及与之对应的权值行/列,然后将筛选后的特征图行/列及与之对应的权值行/列输出至运算单元;对于权值已经离线筛选完成的情况,直接根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算的特征图,然后将筛选后的特征图输出至运算单元,同时已经离线筛选完成的权值不经过筛选单元直接输送给运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出用于计算的特征图行/列及与之对应的权值行/列,然后将筛选后的特征图行/列及与之对应的权值行/列输出至运算单元。
在本公开的一个实施例中,连接状态数组用以表示输出神经元与输入神经元之间的连接状态,表达方式包括:
第一种表达方式:采用数字“0”和“1”表示连接状态,其中“1”表示有连接,“0”表示无连接;或者“0”表示有连接,“1”表示无连接;对于输出神经元与输入神经元组成的特征图的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图的连接状态组成一个包括“0”和“1”的数组;对于输出神经元与输入神经元组成的特征图中行/列的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图中行/列的连接状态组成一个包括“0”和“1”的数组;
第二种表达方式:采用距离表示连接状态,对于输出神经元与输入神经元组成的特征图的连接状态数组来说,将每个输出神经元的第一个连接所在的输入神经元位置到第一个输入神经元的距离、第二个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,第三个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,……,依次类推,直到穷举与该输出神经元相连的所有输入神经元,组合成一个数组来表示该输出神经元对应的连接状态数组。
在本公开的一个实施例中,第二种表达方式的数组中的元素为非负整数。
在本公开的一个实施例中,采用输出神经元与输入神经元组成的特征图的连接状态数组或者输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出的用于计算的特征图及与之对应的权值,或者特征图行/列及与之对应的权值行/列,满足条件包括:
第一种表达方式:筛选出来用于计算输出神经元的特征图和与之对应的权值,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;和/或筛选出来用于计算输出神经元的特征图行/列和与之对应的权值行/列,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;
第二种表达方式:对每个输出神经元Oj对应的连接状态数组Index A,每一位的值为非负整数,记全部的输入神经元为I1,I2,...,IN,设与该输出神经元相连的输入神经元为
Figure GDA0001991721150000031
n≤N,k1,k2,...,kn∈{1,2,...,N},它们的值未知,则Index A有n位,第1位的值A1,表示第一个连接所在的输入神经元位置距离I1的距离;第p位的值AP,p=2,3,...,n,表示当前连接所在的输入神经元位置距离上一个连接所在的输入神经元位置的距离;那么筛选出来用于计算出该输出神经元Oj的输入神经元为:
Figure GDA0001991721150000032
与之相对应的权值为
Figure GDA0001991721150000033
满足:k1=A1+1,kp=Ap+kp-1
在本公开的一个实施例中,该运算装置还包括:存储单元100,其存储数据和指令;其中,该存储单元100中存储的数据包括:输入神经元组成的特征图、权值、输出神经元与输入神经元组成的特征图的连接状态数组、输出神经元与输入神经元组成的特征图中每行的连接状态数组、输出神经元与输入神经元组成的特征图中每列的连接状态数组、输出神经元组成的特征图以及其他人工神经网络运算所需数据和参数。
在本公开的一个实施例中,运算单元600包括:第一部分乘法器,将第一输入数据和第二输入数据进行相乘运算得到输出数据;第二部分一个或多个加法器,将相乘的结果通过加法树逐级相加,得到加权和,根据需要对加权和采取偏置处理或者不做处理;第三部分激活函数单元,对所述得到的加权和结果执行激活函数运算,得到输出神经元。
在本公开的一个实施例中,第二部分一个或多个加法器组成加法树。
在本公开的一个实施例中,运算单元600还包括:池化单元,对输入数据执行池化操作。
在本公开的一个实施例中,该运算装置还包括:缓存单元300,其缓存数据和指令。
在本公开的一个实施例中,缓存单元300包括:输入缓存单元310,用于缓存输入的数据和指令;以及输出神经元缓存320,用于缓存输出神经元。
在本公开的一个实施例中,输入缓存单元310包括:指令缓存311,用于存储专用指令;权值缓存312,用于缓存权值;以及输入神经元缓存313,用于缓存输入神经元。
在本公开的一个实施例中,该运算装置还包括:控制单元500,其从指令缓存311中读取专用指令,并将其译码成运算单元指令并输入至运算单元600。
在本公开的一个实施例中,该运算装置还包括:直接内存存取单元200,其在存储单元100与指令缓存311、权值缓存312、输入神经元缓存313和输出神经元缓存320中进行数据或者指令读写;并将输出神经元与输入神经元组成的特征图的连接状态数组和/或输出神经元与输入神经元组成的特征图中行/列的连接状态数组输送到筛选单元400;其中,输出神经元与输入神经元组成的特征图的连接状态数组和/或输出神经元与输入神经元组成的特征图中行/列的连接状态数组由直接内存存取单元200从存储单元100输送到筛选单元400;输入神经元从存储单元100中依次经由直接内存存取单元200、输入神经元缓存313输送到筛选单元400;权值从存储单元100中依次经由直接内存存取单元200、权值缓存312输送到筛选单元400。
在本公开的一个实施例中,输入神经元为卷积神经网络中中任意相邻两层中,处于网络前馈运算前端的下层中的神经元;所述输出神经元为卷积神经网络中中任意相邻两层中,处于网络前馈运算后端的上层中的神经元。
根据本公开的另一个方面,提供了一种采用上述提到的任一种运算装置执行的运算方法,包括:筛选单元400根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算得到该输出神经元的特征图和与之对应的权值,并将结果一次性或分批输出至运算单元600;和/或根据输出神经元与输入神经元组成的特征图中每行的连接状态数组,筛选出用于计算得到该输出神经元的特征图行,以及与之对应的权值行,并将结果一次性或分批输出至运算单元600;和/或用于根据输出神经元与输入神经元组成的特征图中每列的连接状态数组,筛选出用于计算得到该输出神经元的特征图列,以及与之对应的权值列,并将所得结果一次性或分批输出至运算单元600;以及运算单元600根据指令对筛选单元400输出的数据结果执行相应的支持结构裁剪的人工神经网络运算,得到输出神经元。
在本公开的一个实施例中,在运算单元中进行的人工神经网络运算包括:将输入神经元组成的特征图中的输入神经元和其对应的权值相乘,得到各个数据乘以权重的结果;执行加法树运算,将得到的各个数据乘以权重的结果通过加法树逐级相加,得到加权和,根据需要对加权和采取偏置处理或不做处理;以及对加权和的结果执行激活函数运算,得到输出神经元。
在本公开的一个实施例中,偏置处理为:将加权和与偏置进行相加,该偏置的值和输出神经元值一一对应。
根据本公开的又一个方面,还提供一种芯片,其内包含上面提到的任一种运算装置。
根据本公开的再一个方面,提供了一种电子装置,包括板卡,该板卡包括芯片封装结构,该芯片封装结构包括本公开提到的任一种芯片。
(三)有益效果
从上述技术方案可以看出,本公开提供的运算装置、运算方法和芯片,至少具有以下有益效果之一:
1、通过在输入神经元与输出神经元之间设置筛选单元,实现了结构剪裁,筛选出结构剪裁后人工神经网络中参与后续运算的输入神经元组成的特征图和相对应的权值,避免了将所有输入神经元和权值都参与网络运算造成的运算量冗余和访存冗余,解决了CPU和GPU运算性能不足,前端译码开销大的问题,有效提高了对多层人工神经网络运算算法的支持;
2、通过采用针对多层人工神经网络运算算法的专用片上缓存,充分挖掘了输入神经元和权值数据的重用性,避免了反复向内存读取这些数据,降低了内存访问带宽,避免了内存带宽成为多层人工神经网络运算及其训练算法性能瓶颈的问题。
附图说明
图1A为根据本公开一实施例所示运算装置的筛选单元功能示意图;图1B为根据本公开另一实施例所示运算装置的筛选单元功能示意图;图1C为根据本公开又一实施例所示运算装置的筛选单元功能示意图;图1D为根据本公开再一实施例所示运算装置的筛选单元功能示意图。
图2A为根据本公开实施例所示人工神经网络中卷积层在进行结构剪裁前的运算对比示意图;图2B为根据本公开实施例所示人工神经网络中卷积层在进行结构剪裁后的运算对比示意图。
图3为根据本公开第一实施例所示运算装置的结构示意图。
图4为根据本公开实施例所示人工神经网络中卷积层的结构示意图。
图5为根据本公开实施例所示采用筛选单元对人工神经网络实现结构裁剪的结构示意图。
图6为根据本公开实施例所示采用连接状态数组的第一种表示实现图5所示结构裁剪的示意图。
图7为根据本公开实施例所示采用连接状态数组的第二种表示实现图5所示结构裁剪的示意图。
图8A为根据图3所示运算装置进行运算的方法流程图;图8B为如图8A所示步骤S808对应的实施子步骤流程图。
图9为根据本公开第二实施例所示运算装置的结构示意图。
图10为根据本公开第三实施例所示运算装置的结构示意图。
【附图标记及字母说明】
100-存储单元; 200-直接内存存取单元;
300-缓存单元;
310-输入缓存单元;
311-指令缓存; 312-权值缓存;
313-输入神经元缓存;
320-输出神经元缓存;
400-筛选单元;
500-控制单元; 600-运算单元;
Input map-输入神经元组成的特征图;
Index-输出神经元与输入神经元组成的特征图的连接状态数组;
Kernel-权值;
Output map-输出神经元组成的特征图;
DMA-直接内存存取单元;
CPU-通用处理器;
GPU-图形处理器。
具体实施方式
在本说明书中,下述用于描述本公开原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本公开的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本公开的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。在本公开中,术语“包括”和“含有”及其派生词意为包括而非限制。
本说明书中“行/列”的含义表示行或者列,并且带有“行/列”的名词,行与行对应,列与列对应,比如:输出神经元与输入神经元组成的特征图行/列的连接状态数组筛选出用于计算的特征图行/列和与之对应的权值行/列代表如下含义:输出神经元与输入神经元组成的特征图行的连接状态数组筛选出用于计算的特征图行和与之对应的权值行或者输出神经元与输入神经元组成的特征图列的连接状态数组筛选出用于计算的特征图列和与之对应的权值列。
本公开提供了一种运算装置、运算方法和芯片,通过在输入神经元与输出神经元之间设置筛选单元,利用输出神经元与输入神经元组成的特征图的连接状态数组实现了结构剪裁,筛选出结构剪裁后人工神经网络中参与后续运算的特征图和与其对应的权值,避免了将所有输入神经元和权值都参与网络运算造成的运算量冗余和访存冗余,解决了CPU和GPU运算性能不足,前端译码开销大的问题,且充分挖掘了输入神经元和权值数据的重用性,降低了内存访问带宽,减小了运算量与访存量,实现高效率输出。
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开作进一步详细说明。
在本公开的第一个示例性实施例中,提供了一种运算装置。图1A为根据本公开一实施例所示运算装置的筛选单元功能示意图;图1B为根据本公开另一实施例所示运算装置的筛选单元功能示意图;图1C为根据本公开又一实施例所示运算装置的筛选单元功能示意图;图1D为根据本公开再一实施例所示运算装置的筛选单元功能示意图。图2A为根据本公开实施例所示人工神经网络中卷积层在进行结构剪裁前的运算对比示意图;图2B为根据本公开实施例所示人工神经网络中卷积层在进行结构剪裁后的运算对比示意图。图3为根据本公开第一实施例所示运算装置的结构示意图。
结合图1A至图1D、图2A和图2B以及图3所示,一种运算装置,包括:
存储单元100,其存储数据和指令;
缓存单元300,包括:输入缓存单元310,以及输出神经元缓存320,其中输入缓存单元310包括:指令缓存311,权值缓存312以及输入神经元缓存313;
筛选单元400,根据输出神经元与输入神经元组成的特征图(Input map)的连接状态数组(Index)筛选出用于计算的特征图(Input map)和与其对应的权值(Kernel),并将结果输出至运算单元;
控制单元500,其从指令缓存311中读取专用指令,并将其译码成运算单元指令并输入至运算单元;
运算单元600,其根据存储单元100中存储的指令对输入的数据执行相应的运算;
直接内存存取单元(DMA)200,其在存储单元100与指令缓存311、权值缓存312、输入神经元缓存313和输出神经元缓存320中进行数据或者指令读写;并将连接状态数组输送到筛选单元400;
其中,输出神经元与输入神经元组成的特征图的连接状态数组由直接内存存取单元200从存储单元100输送到筛选单元400;输入神经元从存储单元100中依次经由直接内存存取单元200、输入神经元缓存313输送到筛选单元400;权值从存储单元100中依次经由直接内存存取单元200、权值缓存312输送到筛选单元400;
下面对运算装置的各个部分进行详细介绍。
存储单元100存储的数据包括:输入神经元组成的特征图,权值,连接状态数组以及输出神经元等;
指令缓存311,用于存储专用指令;
权值缓存312,用于缓存权值;
输入神经元缓存313,用于缓存输入神经元;
输出神经元缓存320,用于缓存输出神经元;
筛选单元400是本实施例运算装置的核心部分,如图1A至1D所示,筛选单元400和运算单元600的功能如下:
对于权值未经过离线筛选的情况,筛选单元400根据输出神经元与输入神经元组成的特征图(Input map)的连接状态数组(Index)筛选出参与后续运算的特征图和与其对应的权值(Kernel),并根据规模将筛选出来的特征图中的输入神经元和对应的权值一次性或分批传给运算单元600,对应图1A所示情况;或者
对于权值未经过离线筛选的情况,筛选单元400根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出参与后续运算的特征图行/列和与其对应的权值行/列,并根据规模将筛选出来的特征图中的输入神经元和对应的权值一次性或分批传给运算单元600,对应图1B所示情况;
对于权值已经离线筛选完成的情况,筛选单元400根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出参与后续运算的特征图,并根据规模将筛选出来的特征图中的输入神经元一次性或分批传给运算单元600,同时将权值直接传给运算单元,对应图1C中所示情况;或者
对于权值已经离线筛选完成的情况,筛选单元400根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出参与后续运算的特征图行/列,并根据规模将筛选出来的特征图中的输入神经元一次性或分批传给运算单元,同时将权值行/列直接传给运算单元600,对应图1D所示情况;
经过筛选单元实现结构剪裁后的卷积层前后运算对比示意图如图2A和2B所示,结构剪裁之前,所有的Input map和Kernel都参与了运算,而经过筛选单元的筛选过程,只有与输出神经元存在连接关系的输入神经元才作为有效的特征图被筛选出来参与后续运算,减小了计算量和访存量,实现了结构裁剪,提高了运算效率,降低了内存访问带宽;
下面对人工神经网络的结构如何实现裁剪和连接状态数组的表示形式做详细介绍。图4为根据本公开实施例所示人工神经网络中卷积层的结构示意图;图5为根据本公开实施例所示采用筛选单元对人工神经网络实现结构裁剪的结构示意图;图6为根据本公开实施例所示采用连接状态数组的第一种表示实现图5所示结构裁剪的示意图;图7为根据本公开实施例所示采用连接状态数组的第二种表示实现图5所示结构裁剪的示意图。
参照图4所示,人工神经网络主要基于卷积运算,以一个卷积层为例,设输入层由N个输入神经元I1,I2,...,IN组成,输出层由M个输出神经元Q1,O2,...,OM组成,则有NM个权值Wij,i=1,2,...,N,j=1,2,...,M。筛选前,某个输出神经元Oj由所有的N个输入神经元组成的特征图和权值W1j,W2j,...,WNj生成,生成过程为Wij分别在Ii上滑动做内积得到N个中间结果特征图,i=1,2,...,N,每个中间结果特征图的大小和Oj相同,之后这N个中间结果特征图对位相加,累加成一个输出神经元组成的特征图,即Oj;Oj中的输出神经元可以共用一个连接状态数组,也可以每个输出神经元对应一个连接状态数组;这里全部的NM个Wij为筛选前的权值;
其中,权值可以经过筛选单元筛选,也可以事先离线筛选完成。
输出神经元与输入神经元组成的特征图的连接状态数组,即Index,有两种表示形式:其中第一种表示如下:对每个输出神经元对应的Index A,由于输入层有N个节点,所以A有N位,每一位的值为1或0,第i位的值Ai为1表示Ii与该输出神经元之间有连接,0表示Ii与该输出神经元之间无连接;在筛选单元中,Index是已知的,筛选后得到的用于计算出该输出神经元的每个Ik和Wkj满足:Ak=1,k∈{1,2,...,N},该输出神经元在Oj内;另外,也可以采用0表示有连接,1表示无连接,分析同上;
连接状态数组的第二种表示如下:对每个输出神经元对应的Index A,每一位的值为非负整数,设与该输出神经元相连的输入神经元组成的特征图为
Figure GDA0001991721150000111
n≤N,k1,k2,...,kn∈{1,2,...,N},它们的值未知。则Index A有n位,第1位的值A1,表示第一个连接所在的输入神经元位置距离I1的距离;第p位的值AP,p=2,3,...,n,表示当前连接所在的输入神经元位置距离上一个连接所在的输入神经元的距离。筛选单元中,连接状态数组是已知的,筛选后得到的用于计算出该输出神经元的输入神经元组成的特征图为
Figure GDA0001991721150000112
与之相对应的权值为
Figure GDA0001991721150000113
满足:k1=A1+1,kp=Ap+kp-1,该输出神经元在Oj内;
为了使筛选单元的功能更加明确,下面以具体的人工神经网络为例,参照图5来看,以N=4,M=2为例,即输入层由4个输入神经元:I1,I2,I3,I4组成,输出层由2个输出神经元O1,O2组成,介绍筛选单元中的数据操作过程。
该卷积层有4个输入神经元:I1,I2,I3,I4;有2个输出神经元:O1,O2;用于生成O1,O2的筛选前的权值分别为:W11,W21,W31,W41和W12,W22,W32,W42;假设每个输出神经元组成的特征图中的输出神经元共用一个连接状态数组,O1,O2对应的连接状态数组为A(1),A(2),图5中的虚线四边形表示进行结构剪裁后被去除的权值,即筛选后的权值分别为:W11,W31,W41和W22,W32,结果如图5所示;
若连接状态数组采用第一种表示,这里用1表示有连接,0表示无连接:
如图6所示,O1中的输出神经元对应的Index A(1)为1011,由于
Figure GDA0001991721150000121
所以筛选后得到的用于计算出O1的输入神经元组成的特征图为I1,I3,I4,与之相对应的权值为W11,W31,W41;O2中的输出神经元对应的Index A(2)为0110,所以筛选后得到的用于计算出O2的输入神经元组成的特征图为I2,I3,与之相对应的权值为W22,W32
若连接状态数组采用第二种表示:
如图7所示,O1中的输出神经元对应的Index A(1)为021,O2中的输出神经元对应的Index A(2)为11。由此得到,对于O1,k1=0+1=1,k2=2+1=3,k3=1+3=4;对于O2,k1=1+1=2,k2=1+2=3。所以筛选后得到的用于计算出O1的输入神经元组成的特征图为I1,I3,I4,与之相对应的权值为W11,W31,W41;用于计算出O2的输入神经元组成的特征图为I2,I3,与之相对应的权值为W22,W32
以上两种Index的表示方式都可以实现对输入神经元组成的特征图和权值的筛选;
运算单元600包括但不仅限于:第一部分乘法器,第二部分加法树,第三部分激活函数单元;
第一部分乘法器实现如下功能:将输入数据1,和输入数据2相乘,得到相乘之后的输出结果,过程为:out=in1*in2,其中,将输入数据1记作in1,输入数据2记作in2,将相乘后的输出结果记作out;
第二部分加法树实现如下功能:将输入数据in1通过加法树逐级相加,得到逐级相加的输出数据,其中in1是一个长度为N的向量,N大于1,累加的过程为:out’=in1[1]+in1[2]+...+in1[N],将输入数据1通过加法数逐级相加之后得到的输出数据和输入数据2相加,其过程表达为:out”=in1[1]+in1[2]+...+in1[N]+in2;或者将输入数据1和输入数据2相加得到输出数据,过程为:out”’=in1+in2,其中out’,out”,out”表示三种输出结果;
第三部分激活函数单元将输入数据(in)通过激活函数(active)运算得到激活输出数据(out),过程为:out=active(in),激活函数active可以是sigmoid、tanh、relu、softmax等,除了做激活操作,第三部分可以实现其他的非线性函数的运算,将输入数据(in)通过运算(f)得到输出数据(out)的函数过程为:out=f(in);其中一种为池化运算,即将输入数据(in)经过池化运算得到池化操作之后的输出数据(out),过程为out=pool(in),其中pool为池化操作,该池化操作是由池化单元实现的,是在第三部分与激活函数单元并列存在的单元,池化操作包括但不限于:平均值池化,最大值池化,中值池化;输入数据是和输出数据相关的一个池化核中的数据;
运算单元执行的运算包括神经网络计算;该网络计算包括:第一部分是将所述输入数据1和输入数据2相乘,得到相乘之后的数据;第二部分执行加法树运算,用于将输入数据1通过加法树逐级相加,或者将输入数据1通过和输入数据2相加得到输出数据;第三部分执行激活函数运算,对输入数据通过激活函数运算得到输出数据;第四部分执行池化运算,out=pool(in),其中pool为池化操作,池化操作包括但不限于:平均值池化,最大值池化,中值池化,输入数据in是和输出out相关的一个池化核中的数据;以上几个部分的运算可以自由选择一个多个部分进行不同顺序的组合,从而实现各种不同功能的运算。
图8A为根据图3所示运算装置进行运算的方法流程图;图8B为如图8A所示步骤S808对应的实施子步骤流程图;参照图3、图8A和图8B所示,一种运算装置的运算方法,包括:
步骤S802:直接内存存取单元200将存储单元100中的输入神经元和权值分别传给输入神经元缓存313和权值缓存312,并同时将相应指令传入指令缓存311中;
步骤S804:直接内存存取单元200将存储单元100中的连接状态数组传给筛选单元400,筛选单元400从输入神经元缓存313和权值缓存312中分别获取输入神经元组成的特征图和权值,并根据连接状态数组筛选出参与后续运算的特征图和与之分别相对应的权值,并将其传给运算单元600;
步骤S806:控制单元500从指令缓存311中读取专用指令,并将其译码成运算单元指令并输入至运算单元600;
步骤S808:运算单元600调取筛选后的特征图和权值并进行运算获得输出神经元;
基于上述,运算单元600进行运算的过程分为如下子步骤:
子步骤S808a:将筛选后的输入神经元组成的特征图中的输入神经元和相对应的权值数据相乘,得到各个数据乘以权重的结果;
子步骤S808b:对各个数据乘以权重的结果执行加法树运算,得到加权和,根据需要对加权和加偏置或不做处理;
子步骤S808c:对上一步得到的加权和执行激活函数运算,得到输出神经元;
步骤S810:运算单元600将得到的输出神经元放入输出神经元缓存320;
步骤S812:DMA 200将输出神经元缓存320中的数据转入存储单元100。
重复进行上述步骤直至得到网络最终层的输出。
值得强调的是,本公开中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算前端的下层中的神经元即为输入神经元,处于网络前馈运算后端的上层中的神经元即为输出神经元;具体来说,设一个卷积神经网络有L层,K=1,2,...,L-1,对于第K层和第K+1层来说,我们将第K层称为输入层,其中的神经元为所述输入神经元,第K+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层,每层神经元的个数是预知的。
上述提到,权值可以经过筛选单元筛选,也可以事先离线筛选完成,在第一个实施例中,权值是经过筛选单元筛选实现的,在本公开的第二个示例性实施例中,提供了另外一种运算装置,适用于离线筛选权值而不经过筛选单元筛选权值的情况。图9为根据本公开第二实施例所示运算装置的结构示意图,如图9所示,本实施例中提供的运算装置包含的各个模块单元均相同,与第一个实施例的区别在于:筛选单元的功能400有所不同,在本实施例中,权值不经过筛选单元400进行筛选,而是直接从权值缓存312输送至运算单元600;
对应本实施例所示运算装置的运算方法,同样参照图8A与图8B,与第一个实施例中所述运算装置的运算方法大致相同,只在步骤S804中替换成如下步骤:
S804’:直接内存存取单元200将存储单元100中的连接状态数组传给筛选单元400,筛选单元400从输入神经元缓存313中获取输入神经元组成的特征图,并根据连接状态数组筛选出参与后续运算的特征图,并将其传给运算单元600;与此同时,离线筛选后的权值从权值缓存312传入运算单元600;
以上两个实施例所示的运算装置均是从权值缓存312和输入神经元缓存313分别读取权值和输入神经元组成的特征图输送到筛选单元400中,而在实际操作中也可以直接从直接内存存取单元200将权值和输入神经元组成的特征图直接读入到筛选单元400中,据此,本公开的第三个示例性实施例中还提出了一种运算装置。
图10为根据本公开第三实施例所示运算装置的结构示意图,如图10所示,本实施例中提供的运算装置与第一实施例的模块单元相同,与第一实施例的区别在于以下几点:
1、与第一个实施例相比,位置设置的区别在于:筛选单元400设置成与直接内存存取单元200直接相连,并且直接从直接内存存取单元200向筛选单元400传输权值和输入神经元组成的特征图,然后经过筛选单元400筛选后的权值和输入神经元组成的特征图分别传入权值缓存312和输入神经元313,最后传给运算单元600;
2、与第一个实施例相比,功能的设置区别在于:还多设置了一种离线筛选权值的数据处理路径,具体表现为:权值除了可以通过筛选单元400进行筛选然后传输至权值缓存312,最终传给运算单元600之外,还可以通过权值缓存312直接传给运算单元600,而这种情形适用于已经离线筛选好权值的情形。
基于以上设置,第三个实施例提供的运算装置可以同时实现权值经过离线筛选和不经过离线筛选两种情形的数据处理,参照图8A和图8B以及以上第一个实施例中提供的运算装置的运算方法,本实施例的运算装置的运算方法,只需将第一个实施例中描述的运算装置的运算方法中步骤S802和步骤S804换成如下步骤即可:
步骤S802”:直接内存存取单元200将存储单元100中的指令传入指令缓存311中;
步骤S804”a:直接内存存取单元200将存储单元100中的连接状态数组、输入神经元组成的特征图和权值传给筛选单元400,筛选单元400根据连接状态数组筛选出参与后续运算的特征图和与之分别相对应的权值,并分别将筛选后的输入神经元组成的特征图中的输入神经元和对应的权值传入至输入神经元缓存313和权值缓存312;
步骤S804”b:直接内存存取单元200将存储单元100中的连接状态数组和输入神经元组成的特征图传给筛选单元400,筛选单元400根据连接状态数组,筛选出用于计算得到输出神经元的特征图,并将其中的输入神经元传入至输入神经元缓存313,于此同时,直接内存存取单元200将存储单元100中已经筛选完毕的权值传入权值缓存312;
上述步骤的执行过程如下:若权值不经过离线筛选,执行完步骤S802”之后继续执行步骤S804”a;若权值完成了离线筛选,执行完步骤S802”之后继续执行步骤S804”b。
在本公开的第四个示例性实施例中,还提供了一种电子装置,包括板卡,该板卡包括芯片封装结构,该芯片封装结构包括芯片,该芯片包括本公开实施例中提供的运算装置;
以上提到的电子装置在实际应用中包括:数据数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器以及医疗设备等;
以上交通工具包括飞机、轮船以及车辆等;以上家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶和油烟机等;以上医疗设备包括核磁共振仪、B超仪和心电图仪等。
综上所述,本公开实施例提供了一种运算装置及运算方法,通过在输入神经元与输出神经元之间设置筛选单元,利用输出神经元和输入神经元组成的特征图的连接状态数组实现了结构剪裁,筛选出结构剪裁后人工神经网络中参与后续运算的特征图和相对应的权值,避免了将所有输入神经元和权值都参与网络运算造成的运算量冗余和访存冗余,并且还适用于权值经过离线筛选和不经过离线筛选两种情形,解决了CPU和GPU运算性能不足,前端译码开销大的问题,且充分挖掘了输入神经元和权值数据的重用性,降低了内存访问带宽,减小了运算量与访存量,实现了高效率输出。
特别强调的是,所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。应注意,贯穿附图,相同的元素由相同或相近的附图标记来表示。在可能导致对本公开的理解造成混淆时,将省略常规结构或构造。应注意,图中各部件的形状和尺寸不反映真实大小和比例,而仅示意本公开实施例的内容。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为发明的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (31)

1.一种运算装置,包括:
筛选单元(400),用于根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算得到该输出神经元的特征图和与之对应的权值,并将结果输出至运算单元(600);和/或用于根据输出神经元与输入神经元组成的特征图中每行的连接状态数组,筛选出用于计算得到该输出神经元的特征图行,以及与之对应的权值行,并将结果输出至运算单元(600);和/或用于根据输出神经元与输入神经元组成的特征图中每列的连接状态数组,筛选出用于计算得到该输出神经元的特征图列,以及与之对应的权值列,并将所得数据结果输出至运算单元(600);以及
运算单元(600),根据指令对筛选单元(400)输出的数据执行相应的支持结构裁剪的人工神经网络运算,得到输出神经元;
其中,所述连接状态数组用以表示输出神经元与输入神经元之间的连接状态,表达方式包括:
第一种表达方式:采用数字“0”和“1”表示连接状态,其中“1”表示有连接,“0”表示无连接;或者“0”表示有连接,“1”表示无连接;对于输出神经元与输入神经元组成的特征图的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图的连接状态组成一个包括“0”和“1”的数组;对于输出神经元与输入神经元组成的特征图中行/列的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图中行/列的连接状态组成一个包括“0”和“1”的数组;或
第二种表达方式:采用距离表示连接状态,对于输出神经元与输入神经元组成的特征图的连接状态数组来说,将每个输出神经元的第一个连接所在的输入神经元位置到第一个输入神经元的距离、第二个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,第三个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,……,依次类推,直到穷举与该输出神经元相连的所有输入神经元,组合成一个数组来表示该输出神经元对应的连接状态数组。
2.根据权利要求1所述的运算装置,其中,所述筛选单元(400)的筛选过程包括:
对于权值未经离线筛选的情况,根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算的特征图及与之对应的权值,然后将筛选后的特征图及与之对应的权值输出至运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出用于计算的特征图行/列及与之对应的权值行/列,然后将筛选后的特征图行/列及与之对应的权值行/列输出至运算单元;
对于权值已经离线筛选完成的情况,直接根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算的特征图,然后将筛选后的特征图输出至运算单元,同时已经离线筛选完成的权值不经过筛选单元直接输送给运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出用于计算的特征图行/列及与之对应的权值行/列,然后将筛选后的特征图行/列及与之对应的权值行/列输出至运算单元。
3.根据权利要求1所述的运算装置,其中,所述第二种表达方式的数组中的元素为非负整数。
4.根据权利要求1所述的运算装置,其中,采用所述输出神经元与输入神经元组成的特征图的连接状态数组或者输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出的用于计算的特征图及与之对应的权值,或者特征图行/列及与之对应的权值行/列,满足条件包括:
第一种表达方式:筛选出来用于计算输出神经元的特征图和与之对应的权值,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;和/或筛选出来用于计算输出神经元的特征图行/列和与之对应的权值行/列,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;或
第二种表达方式:对每个输出神经元Oj对应的连接状态数组Index A,每一位的值为非负整数,记全部的输入神经元为I1,I2,…,IN,设与该输出神经元相连的输入神经元为
Figure FDA0002479687370000022
n≤N,k1,k2,…,kn∈{1,2,…,N},它们的值未知,则Index A有n位,第1位的值A1,表示第一个连接所在的输入神经元位置距离I1的距离;第p位的值AP,p=2,3,…,n,表示当前连接所在的输入神经元位置距离上一个连接所在的输入神经元位置的距离;那么筛选出来用于计算出该输出神经元Oj的输入神经元为:
Figure FDA0002479687370000023
与之相对应的权值为
Figure FDA0002479687370000021
满足:k1=A1+1,kp=Ap+kp-1
5.根据权利要求1所述的运算装置,还包括:存储单元(100),其存储数据和指令;
其中,所述存储单元(100)中存储的数据包括:
输入神经元组成的特征图、权值、输出神经元与输入神经元组成的特征图的连接状态数组、输出神经元与输入神经元组成的特征图中每行的连接状态数组、输出神经元与输入神经元组成的特征图中每列的连接状态数组、输出神经元组成的特征图以及其他人工神经网络运算所需数据和参数。
6.根据权利要求1所述的运算装置,其中,所述运算单元(600)包括:
第一部分乘法器,将第一输入数据和第二输入数据进行相乘运算得到输出数据;
第二部分一个或多个加法器,将相乘的结果通过加法树逐级相加,得到加权和,根据需要对加权和采取偏置处理或者不做处理;
第三部分激活函数单元,对所述得到的加权和结果执行激活函数运算,得到输出神经元。
7.根据权利要求6所述的运算装置,其中,所述一个或多个加法器组成加法树。
8.根据权利要求6所述的运算装置,其中,所述运算单元(600)还包括:池化单元,对输入数据执行池化操作。
9.根据权利要求1所述的运算装置,还包括:缓存单元(300),其缓存数据和指令。
10.根据权利要求9所述的运算装置,其中,所述缓存单元(300)包括:
输入缓存单元(310),用于缓存输入的数据和指令;以及
输出神经元缓存(320),用于缓存输出神经元。
11.根据权利要求10所述的运算装置,其中,所述输入缓存单元(310)包括:
指令缓存(311),用于存储专用指令;
权值缓存(312),用于缓存权值;以及
输入神经元缓存(313),用于缓存输入神经元。
12.根据权利要求11所述的运算装置,还包括:
控制单元(500),其从指令缓存(311)中读取专用指令,并将其译码成运算单元指令并输入至运算单元(600)。
13.根据权利要求12所述的运算装置,还包括:
直接内存存取单元(200),其在存储单元(100)与指令缓存(311)、权值缓存(312)、输入神经元缓存(313)和输出神经元缓存(320)中进行数据或者指令读写;并将输出神经元与输入神经元组成的特征图的连接状态数组和/或输出神经元与输入神经元组成的特征图中行/列的连接状态数组输送到筛选单元(400);
其中,输出神经元与输入神经元组成的特征图的连接状态数组和/或输出神经元与输入神经元组成的特征图中行/列的连接状态数组由直接内存存取单元(200)从存储单元(100)输送到筛选单元(400);输入神经元从存储单元(100)中依次经由直接内存存取单元(200)、输入神经元缓存(313)输送到筛选单元(400);权值从存储单元(100)中依次经由直接内存存取单元(200)、权值缓存(312)输送到筛选单元(400)。
14.根据权利要求13所述的运算装置,其中,所述输入神经元为卷积神经网络中中任意相邻两层中,处于网络前馈运算前端的下层中的神经元;所述输出神经元为卷积神经网络中中任意相邻两层中,处于网络前馈运算后端的上层中的神经元。
15.一种采用权利要求1所述的运算装置执行的运算方法,包括:
筛选单元(400)根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算得到该输出神经元的特征图和与之对应的权值,并将结果一次性或分批输出至运算单元(600);和/或根据输出神经元与输入神经元组成的特征图中每行的连接状态数组,筛选出用于计算得到该输出神经元的特征图行,以及与之对应的权值行,并将结果一次性或分批输出至运算单元(600);和/或用于根据输出神经元与输入神经元组成的特征图中每列的连接状态数组,筛选出用于计算得到该输出神经元的特征图列,以及与之对应的权值列,并将所得结果一次性或分批输出至运算单元(600);以及
运算单元(600)根据指令对筛选单元(400)输出的数据结果执行相应的支持结构裁剪的人工神经网络运算,得到输出神经元;
其中,所述连接状态数组用以表示输出神经元与输入神经元之间的连接状态,表达方式包括:
第一种表达方式:采用数字“0”和“1”表示连接状态,其中“1”表示有连接,“0”表示无连接;或者“0”表示有连接,“1”表示无连接;对于输出神经元与输入神经元组成的特征图的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图的连接状态组成一个包括“0”和“1”的数组;对于输出神经元与输入神经元组成的特征图中行/列的连接状态数组来说,是每个输出神经元与所有输入神经元组成的特征图中行/列的连接状态组成一个包括“0”和“1”的数组;或
第二种表达方式:采用距离表示连接状态,对于输出神经元与输入神经元组成的特征图的连接状态数组来说,将每个输出神经元的第一个连接所在的输入神经元位置到第一个输入神经元的距离、第二个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,第三个连接所在的输入神经元位置到上一个连接所在的输入神经元的距离,……,依次类推,直到穷举与该输出神经元相连的所有输入神经元,组合成一个数组来表示该输出神经元对应的连接状态数组。
16.根据权利要求15所述的运算方法,其中,所述筛选单元(400)的筛选过程包括:
对于权值未经离线筛选的情况,根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算的特征图及与之对应的权值,然后将筛选后的特征图及与之对应的权值输出至运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出用于计算的特征图行/列及与之对应的权值行/列,然后将筛选后的特征图行/列及与之对应的权值行/列输出至运算单元;
对于权值已经离线筛选完成的情况,直接根据输出神经元与输入神经元组成的特征图的连接状态数组筛选出用于计算的特征图,然后将筛选后的特征图输出至运算单元,同时已经离线筛选完成的权值不经过筛选单元直接输送给运算单元;和/或根据输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出用于计算的特征图行/列及与之对应的权值行/列,然后将筛选后的特征图行/列及与之对应的权值行/列输出至运算单元。
17.根据权利要求15所述的运算方法,其中,所述第二种表达方式的数组中的元素为非负整数。
18.根据权利要求15所述的运算方法,其中,采用所述输出神经元与输入神经元组成的特征图的连接状态数组或者输出神经元与输入神经元组成的特征图中行/列的连接状态数组筛选出的用于计算的特征图及与之对应的权值,或者特征图行/列及与之对应的权值行/列,满足条件包括:
第一种表达方式:筛选出来用于计算输出神经元的特征图和与之对应的权值,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;和/或筛选出来用于计算输出神经元的特征图行/列和与之对应的权值行/列,其对应的连接状态数组,其中的元素值都为:表示有连接的数字;或
第二种表达方式:对每个输出神经元Oj对应的连接状态数组Index A,每一位的值为非负整数,记全部的输入神经元为I1,I2,…,IN,设与该输出神经元相连的输入神经元为
Figure FDA0002479687370000061
n≤N,k1,k2,..,kn∈{1,2,…,N},它们的值未知,则Index A有n位,第1位的值A1,表示第一个连接所在的输入神经元位置距离I1的距离;第p位的值AP,p=2,3,…,n,表示当前连接所在的输入神经元位置距离上一个连接所在的输入神经元位置的距离;那么筛选出来用于计算出该输出神经元Oj的输入神经元为:
Figure FDA0002479687370000062
与之相对应的权值为
Figure FDA0002479687370000063
满足:k1=A1+1,kp=Ap+kp-1
19.根据权利要求15所述的运算方法,其中,还包括:
存储单元(100)存储数据和指令;
其中,所述存储单元(100)中存储的数据包括:
输入神经元组成的特征图、权值、输出神经元与输入神经元组成的特征图的连接状态数组、输出神经元与输入神经元组成的特征图中每行的连接状态数组、输出神经元与输入神经元组成的特征图中每列的连接状态数组、输出神经元组成的特征图以及其他人工神经网络运算所需数据和参数。
20.根据权利要求15所述的运算方法,其中,所述运算单元(600)包括:
第一部分乘法器,将第一输入数据和第二输入数据进行相乘运算得到输出数据;
第二部分一个或多个加法器,将相乘的结果通过加法树逐级相加,得到加权和,根据需要对加权和采取偏置处理或者不做处理;
第三部分激活函数单元,对所述得到的加权和结果执行激活函数运算,得到输出神经元。
21.根据权利要求20所述的运算方法,其中,所述一个或多个加法器组成加法树。
22.根据权利要求20所述的运算方法,其中,所述运算单元(600)还包括:池化单元,对输入数据执行池化操作。
23.根据权利要求15所述的运算方法,其中,还包括:
缓存单元(300)缓存数据和指令;
其中,所述缓存单元(300)包括:
输入缓存单元(310),用于缓存输入的数据和指令;以及
输出神经元缓存(320),用于缓存输出神经元。
24.根据权利要求23所述的运算方法,其中,所述输入缓存单元(310)包括:
指令缓存(311),用于存储专用指令;
权值缓存(312),用于缓存权值;以及
输入神经元缓存(313),用于缓存输入神经元。
25.根据权利要求24所述的运算方法,其中,还包括:
控制单元(500)从指令缓存(311)中读取专用指令,并将其译码成运算单元指令并输入至运算单元(600)。
26.根据权利要求25所述的运算方法,其中,还包括:
直接内存存取单元(200)在存储单元(100)与指令缓存(311)、权值缓存(312)、输入神经元缓存(313)和输出神经元缓存(320)中进行数据或者指令读写;并将输出神经元与输入神经元组成的特征图的连接状态数组和/或输出神经元与输入神经元组成的特征图中行/列的连接状态数组输送到筛选单元(400);
其中,输出神经元与输入神经元组成的特征图的连接状态数组和/或输出神经元与输入神经元组成的特征图中行/列的连接状态数组由直接内存存取单元(200)从存储单元(100)输送到筛选单元(400);输入神经元从存储单元(100)中依次经由直接内存存取单元(200)、输入神经元缓存(313)输送到筛选单元(400);权值从存储单元(100)中依次经由直接内存存取单元(200)、权值缓存(312)输送到筛选单元(400)。
27.根据权利要求26所述的运算方法,其中,所述输入神经元为卷积神经网络中中任意相邻两层中,处于网络前馈运算前端的下层中的神经元;所述输出神经元为卷积神经网络中中任意相邻两层中,处于网络前馈运算后端的上层中的神经元。
28.根据权利要求15所述的运算方法,其中,所述在运算单元中进行的人工神经网络运算包括:
将输入神经元组成的特征图中的输入神经元和其对应的权值相乘,得到各个数据乘以权重的结果;
执行加法树运算,将所述得到的各个数据乘以权重的结果通过加法树逐级相加,得到加权和,根据需要对加权和采取偏置处理或不做处理;以及
对所述加权和的结果执行激活函数运算,得到输出神经元。
29.根据权利要求28所述的运算方法,其中,所述偏置处理为:将所述加权和与偏置进行相加,所述偏置的值和输出神经元值一一对应。
30.一种芯片,其内包含权利要求1至14任一项所述的运算装置。
31.一种电子装置,包括板卡,该板卡包括芯片封装结构,该芯片封装结构包括权利要求30所述的芯片。
CN201710456759.4A 2017-05-23 2017-06-16 运算装置、运算方法和芯片 Active CN109146069B (zh)

Priority Applications (15)

Application Number Priority Date Filing Date Title
CN201710456759.4A CN109146069B (zh) 2017-06-16 2017-06-16 运算装置、运算方法和芯片
CN201910474387.7A CN110175673B (zh) 2017-05-23 2018-05-23 处理方法及加速装置
EP19214015.0A EP3657399A1 (en) 2017-05-23 2018-05-23 Weight pruning and quantization method for a neural network and accelerating device therefor
EP19214007.7A EP3657340A1 (en) 2017-05-23 2018-05-23 Processing method and accelerating device
EP18806558.5A EP3637325A4 (en) 2017-05-23 2018-05-23 TREATMENT METHOD AND ACCELERATION DEVICE
CN201880002821.5A CN109478251B (zh) 2017-05-23 2018-05-23 处理方法及加速装置
EP19214010.1A EP3657398A1 (en) 2017-05-23 2018-05-23 Weight quantization method for a neural network and accelerating device therefor
PCT/CN2018/088033 WO2018214913A1 (zh) 2017-05-23 2018-05-23 处理方法及加速装置
US16/699,029 US11710041B2 (en) 2017-05-23 2019-11-28 Feature map and weight selection method and accelerating device
US16/699,049 US20200134460A1 (en) 2017-05-23 2019-11-28 Processing method and accelerating device
US16/699,046 US11727276B2 (en) 2017-05-23 2019-11-28 Processing method and accelerating device
US16/699,055 US20200097828A1 (en) 2017-05-23 2019-11-28 Processing method and accelerating device
US16/699,032 US11907844B2 (en) 2017-05-23 2019-11-28 Processing method and accelerating device
US16/699,027 US20200097826A1 (en) 2017-05-23 2019-11-28 Processing method and accelerating device
US16/699,051 US20220335299A9 (en) 2017-05-23 2019-11-28 Processing method and accelerating device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710456759.4A CN109146069B (zh) 2017-06-16 2017-06-16 运算装置、运算方法和芯片

Publications (2)

Publication Number Publication Date
CN109146069A CN109146069A (zh) 2019-01-04
CN109146069B true CN109146069B (zh) 2020-10-13

Family

ID=64830343

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710456759.4A Active CN109146069B (zh) 2017-05-23 2017-06-16 运算装置、运算方法和芯片

Country Status (1)

Country Link
CN (1) CN109146069B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111832739B (zh) 2019-04-18 2024-01-09 中科寒武纪科技股份有限公司 一种数据处理方法及相关产品
CN117762588A (zh) * 2023-12-20 2024-03-26 上海寒武纪信息科技有限公司 一种在神经网络中调度Kernel的方法和相关产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10339447B2 (en) * 2014-01-23 2019-07-02 Qualcomm Incorporated Configuring sparse neuronal networks
US20160358075A1 (en) * 2015-06-08 2016-12-08 The Regents Of The University Of Michigan System for implementing a sparse coding algorithm

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512723A (zh) * 2016-01-20 2016-04-20 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN106529670A (zh) * 2016-10-27 2017-03-22 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106779068A (zh) * 2016-12-05 2017-05-31 北京深鉴智能科技有限公司 调整人工神经网络的方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
An efficient pruning and weight sharing method for neural network;Jin-Kyu Kim et al;《2016 IEEE International Conference on Consumer Electronics-Asia (ICCE-Asia)》;20161031;第1-2页 *
Efficient memory compression in deep neural networks using coarse-grain sparsification for speech applications;Deepak Kadetotad et al;《2016 Proceedings of the 35th International Conference on Computer-Aided Design》;20161130;第1-8页 *
前馈神经网络结构新型剪枝算法研究;孙环龙 等;《广西师范学院学报(自然科学版)》;20131231;第30卷(第4期);第55-60页 *

Also Published As

Publication number Publication date
CN109146069A (zh) 2019-01-04

Similar Documents

Publication Publication Date Title
US11710041B2 (en) Feature map and weight selection method and accelerating device
CN109032669B (zh) 神经网络处理装置及其执行向量最小值指令的方法
CN111221578B (zh) 计算装置以及计算方法
CN108229654B (zh) 神经网络卷积运算装置及方法
EP3407266B1 (en) Artificial neural network calculating device and method for sparse connection
CN108629406B (zh) 用于卷积神经网络的运算装置
CN110163358B (zh) 一种计算装置及方法
WO2019157812A1 (zh) 一种计算装置及方法
WO2019007406A1 (zh) 一种数据处理装置和方法
CN108170640B (zh) 神经网络运算装置及应用其进行运算的方法
CN111126590B (zh) 一种人工神经网络运算的装置及方法
CN111626413A (zh) 一种计算装置及方法
CN112561028A (zh) 训练神经网络模型的方法、数据处理的方法及装置
CN111353598A (zh) 一种神经网络压缩方法、电子设备及计算机可读介质
CN109478251B (zh) 处理方法及加速装置
CN109146069B (zh) 运算装置、运算方法和芯片
CN113627163A (zh) 一种注意力模型、特征提取方法及相关装置
CN108960415B (zh) 处理装置和处理***
CN110059809B (zh) 一种计算装置及相关产品
CN116888605A (zh) 神经网络模型的运算方法、训练方法及装置
CN111382848A (zh) 一种计算装置及相关产品
CN114730331A (zh) 数据处理装置和数据处理方法
CN115499899B (zh) 边缘物联代理装置的通信时延测试方法、装置及存储介质
CN111126582B (zh) 数据处理方法和相关产品
CN111738429A (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