CN108734280A - 一种运算装置和方法 - Google Patents

一种运算装置和方法 Download PDF

Info

Publication number
CN108734280A
CN108734280A CN201710266052.7A CN201710266052A CN108734280A CN 108734280 A CN108734280 A CN 108734280A CN 201710266052 A CN201710266052 A CN 201710266052A CN 108734280 A CN108734280 A CN 108734280A
Authority
CN
China
Prior art keywords
data
power
neural network
neuron number
network computing
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
CN201710266052.7A
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.)
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 CN202210635510.0A priority Critical patent/CN114970827A/zh
Priority to CN201710266052.7A priority patent/CN108734280A/zh
Priority to CN201811413244.7A priority patent/CN109344965A/zh
Priority to CN201811423295.8A priority patent/CN109409515B/zh
Priority to CN201880001242.9A priority patent/CN109219821B/zh
Priority to EP19199524.0A priority patent/EP3627437B1/en
Priority to EP19199528.1A priority patent/EP3624018B1/en
Priority to EP19199521.6A priority patent/EP3620992B1/en
Priority to EP24168317.6A priority patent/EP4372620A2/en
Priority to CN201811423421.XA priority patent/CN109359736A/zh
Priority to EP18780474.5A priority patent/EP3579150B1/en
Priority to PCT/CN2018/081929 priority patent/WO2018184570A1/zh
Priority to EP19199526.5A priority patent/EP3633526A1/en
Publication of CN108734280A publication Critical patent/CN108734280A/zh
Priority to US16/283,711 priority patent/US10896369B2/en
Pending legal-status Critical Current

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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开提供了一种运算装置,包括:存储装置,用于存储数据和指令;控制装置,与存储装置连接,用于控制数据和指令的交互,其接收该存储装置发送的数据和指令,并将指令译码成运算指令;运算装置,与控制装置连接,接收控制装置发送的数据和运算指令,并根据运算指令对其接收的数据执行运算。本公开还提供了一种运算方法。本公开运算装置及方法,减小了存储资源和计算资源的开销,提高了运算速度。

Description

一种运算装置和方法
技术领域
本公开涉及人工智能技术领域,尤其涉及一种支持幂次神经元表示的神经网络运算装置和方法。
背景技术
多层神经网络被广泛应用于分类识别等任务,近年来,由于其较高的识别率和较高的可并行性,受到学术界和工业界的广泛关注。
目前一些性能较好的神经网络通常都非常庞大,这也意味着这些神经网络需要大量的计算资源和存储资源。大量的计算和存储资源的开销会降低神经网络的运算速度,同时,对硬件的传输带宽以及运算器的要求也大大提高了。
发明内容
(一)要解决的技术问题
鉴于上述技术问题,本公开提供了一种神经网络运算装置和方法,支持幂次神经元表示,通过神经元数据的幂次化,减小神经网络存储资源和计算资源的开销,提高神经网络的运算速度。
(二)技术方案
根据本公开的一个方面,提供了一种神经网络运算装置,包括:
存储装置,用于存储数据和指令;
控制装置,与所述存储装置连接,用于控制数据和指令的交互,其接收该存储装置发送的数据和指令,并将指令译码成运算指令;
运算装置,与所述控制装置连接,接收该控制装置发送的数据和运算指令,并根据运算指令对其接收的权值数据和神经元数据执行神经网络运算;以及
输出转换装置,包括第一幂次转换单元,与所述运算装置连接,用于将神经网络运算得到的神经元数据转换为幂次神经元数据。
优选地,所述控制装置,包括:
数据控制单元,与所述存储装置连接,用于实现存储装置和各缓存单元之间的数据和指令交互;
指令缓存单元,与所述数据控制单元连接,用于接收该数据控制单元发送的指令;
译码单元,与所述指令缓存单元连接,用于从指令缓存单元中读取指令,并将其译码成运算指令;
输入神经元缓存单元,与所述数据控制单元连接,用于从该数据控制单元获取相应的输入神经元数据;
权值缓存单元,与所述数据控制单元连接,用于从数据控制单元获取相应的权值数据;其中,
所述运算装置,分别与所述译码单元、输入神经元缓存单元及权值缓存单元连接,接收各运算指令、神经元数据及权值数据,根据运算指令对其接收的神经元数据和权值数据执行相应的神经网络运算。
优选地,所述第一幂次转换单元的输出端与所述数据控制单元连接,以将其转换成的幂次神经元数据作为下一层神经网络运算的输入数据。
优选地,还包括:第二幂次转换单元,与所述存储装置的其中一输入端连接,用于将非幂次神经元数据转换为幂次神经元数据后输入存储装置。
优选地,所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,其中,所述幂次神经元数据包括符号位和幂次位,符号位采用一位或多位比特位表示神经元数据的符号,幂次位采用m位比特位表示神经元数据的幂次位数据,m为大于1的正整数。
优选地,所述存储装置预存有编码表,用于提供幂次神经元数据的每个幂次位数据对应的指数数值。
优选地,所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂次神经元数据为0。
优选地,所述编码表的对应关系为乱序关系、正相关关系或负相关关系。
优选地,最大的幂次位数据对应幂次神经元数据为0或最小的幂次位数据对应幂次神经元数据为0。
优选地,所述编码表的对应关系为幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。
优选地,所述编码表的对应关系为正相关关系,存储装置预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0;其中,x表示偏置值,y表示步长。
优选地,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。
优选地,y=1,x的数值=-2m-1
优选地,所述编码表的对应关系为负相关关系,存储装置预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0;其中,x表示偏置值,y表示步长。
优选地,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。
优选地,y=1,x的数值等于2m-1
优选地,所述第一幂次转换单元将神经网络运算后得到的神经元数据转换成幂次神经元数据包括:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作;或,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作;或,
sout=sin
dout+=[log2(din+)]
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
优选地,所述第二幂次转换单元将非幂次数据转换为幂次数据包括:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作;或,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作;或,
sout=sin
dout+=[log2(din+)]
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
根据本公开的另一个方面,提供了一种神经网络运算方法,包括:
获取指令、权值数据及神经元数据;
根据运算指令对权值数据和神经元数据进行神经网络运算;
第一幂次转换单元将神经网络运算后得到的神经元数据转换成幂次神经元数据。
优选地,获取指令、权值数据及神经元数据,包括:
将指令、神经元数据及权值数据输入存储装置;
数据控制单元接收该存储装置发送的指令、神经元数据及权值数据;
指令缓存单元、输入神经元缓存单元及权值缓存单元分别接收该数据控制单元发送的指令、神经元数据及权值数据。
优选地,将指令、神经元数据及权值数据输入存储装置还包括,若输入存储装置的神经元数据为幂次神经元数据,则直接输入存储装置;反之,则经所述第二幂次转换单元转换成幂次神经元数据后再输入存储装置。
优选地,根据运算指令对权值数据和神经元数据进行神经网络运算,包括:
译码单元从指令缓存单元中读取指令,并将其译码成各运算指令;
运算单元分别接收所述译码单元、输入神经元缓存单元及权值缓存单元发送的运算指令、幂次神经元数据以及权值数据,并根据运算指令对权值数据和幂次表示的神经元数据进行神经网络运算。
优选地,第一幂次转换单元将神经网络运算后得到的神经元数据转换成幂次神经元数据,包括:
输出神经元缓存单元接收所述运算单元发送的神经网络运算后得到的神经元数据;
第一幂次转换单元接收所述输出神经元缓存单元发送的神经元数据,并将其中的非幂次神经元数据转换为幂次神经元数据。
优选地,通过第一幂次转换单元获得的幂次神经元数据作为神经网络运算下一层的输入幂次神经元,重复神经网络运算步骤和非幂次神经元数据转换成幂次神经元数据步骤,直到神经网络最后一层运算结束。
优选地,通过改变存储装置预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
根据本公开的另一个方面,提供了一种使用所述神经网络运算装置的方法,通过改变存储装置预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
(三)有益效果
从上述技术方案可以看出,本公开神经网络运算装置和方法至少具有以下有益效果其中之一:
(1)利用幂次数据表示方法存储神经元数据,减小存储网络数据所需的存储空间,同时,该数据表示方法简化了神经元与权值数据的乘法操作,降低了对运算器的设计要求,加快的神经网络的运算速度。
(2)将运算后得到的神经元数据转换为幂次表示的神经元数据,减小了神经网络存储资源和计算资源的开销,有利于提高神经网络的运算速度。
(3)对于非幂次神经元数据在输入到神经网络运算装置前可先经过幂次转换,再输入神经网络运算装置,进一步减小了神经网络存储资源和计算资源的开销,提高了神经网络的运算速度。
附图说明
通过附图所示,本公开的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本公开的主旨。
图1为依据本公开实施例的神经网络运算装置的结构示意图。
图2为依据本公开实施例的神经网络运算方法流程图。
图3.1为依据本公开实施例的编码表的示意图。
图3.2为依据本公开实施例的编码表的另一示意图。
图3.3为依据本公开实施例的编码表的另一示意图。
图3.4为依据本公开实施例的编码表的另一示意图。
图3.5为依据本公开实施例的幂次数据的表示方法示意图。
图4为依据本公开实施例的权值与幂次神经元的乘法操作示意图。
图5为依据本公开实施例的权值与幂次神经元的乘法操作示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开的保护范围。
本公开提供了一种神经网络运算装置。图1为依据本公开实施例神经网络运算装置的示意图。请参照图1,本实施例神经网络运算装置,包括:
存储装置,用于存储数据和指令;
控制装置,与所述存储装置连接,用于控制数据和指令的交互,其接收该存储装置发送的数据和指令,并将指令译码成运算指令;
运算装置,与所述控制装置连接,接收该控制装置发送的数据和运算指令,并根据运算指令对其接收的权值数据和神经元数据执行神经网络运算;以及
输出转换装置,包括第一幂次转换单元,与所述运算装置连接,用于将神经网络运算得到的神经元数据转换为幂次神经元数据。
具体的,所述存储装置包括:存储单元1,用于存储数据和指令。
所述控制装置包括:
数据控制单元2,与所述存储装置连接,用于存储装置和各缓存单元之间的数据和指令交互;
指令缓存单元3,与所述数据控制单元连接,用于接收数据控制单元发送的指令;
译码单元4,与所述指令缓存单元连接,用于从指令缓存单元中读取指令,并将其译码成各运算指令;
输入神经元缓存单元5,与所述数据控制单元连接,用于接收数据控制单元发送的神经元数据;
权值缓存单元6,与所述数据控制单元连接,用于接收从数据控制单元发送的权值数据。
所述运算装置包括:运算单元7,分别与所述译码单元、输入神经元缓存单元及权值缓存单元连接,接收各运算指令、神经元数据及权值数据,用于根据各运算指令对其接收的神经元数据和权值数据执行相应的运算。
所述输出转换装置包括:
输出神经元缓存单元8,与所述运算单元连接,用于接收运算单元输出的神经元数据;
第一幂次转换单元10,与所述输出神经元缓存单元连接,将所述输出神经元缓存单元发送的神经元数据中非幂次表示的数据转换成幂次表示的数据。
其中,存储装置从外部地址空间接收数据和指令,该数据包括神经网络权值数据、神经网络输入数据等。
更具体而言,所述神经网络运算装置,还包括第二幂次转换单元9,与所述存储装置连接,用于将神经网络输入数据中非幂次神经元数据转换为幂次神经元数据,并发送至所述存储装置。而对于神经网络输入数据中的幂次神经元数据,则直接存入存储装置。
另外,幂次转换操作有多种可选方式。下面列举本实施例所采用的三种幂次转换操作:
第一种幂次转换方法:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作。
第二种幂次转换方法:
sout=sin
其中,
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作。
第三种幂次转换方法:
sout=sin
dout+=[log2(din+)]
其中,
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
另外,本公开实施例还提供了一种神经网络运算方法,图2为本公开实施例神经网络运算方法的流程图。具体而言,本公开实施例的神经网络为多层神经网络,对于每层神经网络可按图2所示的运算方法进行运算,其中,神经网络第一层输入幂次神经元数据可通过存储装置从外部地址读入,若外部地址读入的数据已经为幂次数据则直接传入存储装置,否则先通过幂次转换单元转换为幂次数据,此后各层神经网络的输入幂次神经元数据可由在该层之前的一层或多层神经网络的输出幂次神经元数据提供。请参照图2,本实施例单层神经网络运算方法,包括:
步骤S1,获取指令、权值数据及神经元数据。
其中,所述步骤S1包括以下子步骤:
S11,将指令、神经元数据及权值数据输入存储装置;其中,对幂次神经元数据直接输入存储装置,对非幂次数据经过所述第二幂次转换单元转换后输入存储装置;
S12,数据控制单元接收该存储装置发送的指令、幂次神经元数据及权值数据;
S13,指令缓存单元、输入神经元缓存单元及权值缓存单元分别接收所述数据控制单元发送的指令、幂次神经元数据及权值数据并分发给译码单元或运算单元。
所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,具体为,幂次神经元数据包括符号位和幂次位,符号位用一位或多位比特位表示神经元数据的符号,幂次位用m位比特位表示神经元数据的幂次位数据,m为大于1的正整数。存储装置的存储单元预存有编码表,提供幂次神经元数据的每个幂次位数据对应的指数数值。编码表设置一个或者多个幂次位数据(即置零幂次位数据)为指定对应的幂次神经元数据为0。也就是说,当幂次神经元数据的幂次位数据是编码表里的置零幂次位数据时候,表示该幂次神经元数据为0。
编码表的对应关系可以是任意的。
例如,编码表的对应关系可以是乱序的。如图3.1所示一种m为5的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为3。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为1。幂次位数据为00100的时候对应幂次神经元数据为0。
编码表的对应关系也可以是正相关的,存储装置预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例里,y为1,x的数值等于-2m-1。由此幂次神经元数据所表示的数值的指数范围为-2m-1~2m-1-1。
在一种实施例里,如图3.2所示一种m为5,x为0,y为1的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为1。幂次位数据为00010的时候对应指数数值为2。幂次位数据为00011的时候对应指数数值为3。幂次位数据为11111的时候对应幂次神经元数据为0。如图3.3所示另一种m为5,x为0,y为2的编码表的部分内容,幂次位数据为00000的时候对应指数数值为0。幂次位数据为00001的时候对应指数数值为2。幂次位数据为00010的时候对应指数数值为4。幂次位数据为00011的时候对应指数数值为6。幂次位数据为11111的时候对应幂次神经元数据为0。
编码表的对应关系可以是负相关的,存储装置预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0。x表示偏置值,y表示步长。在一种实施例情况下,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。通过预设定不同的x和y以及通过改变x和y的数值,幂次的表示范围变得可配,可以适用于需要不同数值范围的不同的应用场景。因此,本神经网络运算装置的应用范围更加广泛,使用更加灵活可变,可根据用户需求来做调整。
在一种实施例里,y为1,x的数值等于2m-1。由此幂次神经元数据所表示的数值的指数范围为-2m-1-1~2m-1
如图3.4所示一种m为5的编码表的部分内容,幂次位数据为11111的时候对应数数值为0。幂次位数据为11110的时候对应指数数值为1。幂次位数据为11101的时候对应指数数值为2。幂次位数据为11100的时候对应指数数值为3。幂次位数据为00000的时候对应幂次神经元数据为0。
编码表的对应关系可以是幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。当幂次位数据最高位为0时,对应幂次神经元数据为0;当幂次位数据最高位为1时,对应幂次神经元数据不为0。反之亦可,即当幂次位数据最高位为1时,对应幂次神经元数据为0;当幂次位数据最高位为0时,对应幂次神经元数据不为0。用另一种语言来描述,即幂次神经元数据的幂次位被分出一个比特来指示幂次神经元数据是否为0。
在一个具体实例图3.5所示,符号位为1位,幂次位数据位为7位,即m为7。编码表为幂次位数据为11111111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次神经元数据对应相应的二进制补码。当幂次神经元数据符号位为0,幂次位为0001001,则其表示具体数值为29,即512;幂次神经元数据符号位为1,幂次位为1111101,则其表示具体数值为-2-3,即-0.125。相对于浮点数据,幂次数据只保留数据的幂次位,极大减小了存储数据所需的存储空间。
通过幂次数据表示方法,可以减小存储神经元数据所需的存储空间。在本实施例所提供示例中,幂次数据为8位数据,应当认识到,该数据长度不是固定不变的,在不同场合下,根据数据神经元的数据范围采用不同的数据长度。
步骤S2,根据运算指令对权值数据和神经元数据进行神经网络运算。其中,所述步骤S2包括以下子步骤:
S21,译码单元从指令缓存单元中读取指令,并将其译码成各运算指令;
S22,运算单元分别接收所述译码单元、输入神经元缓存单元及权值缓存单元发送的运算指令、幂次神经元数据以及权值数据,并根据运算指令对权值数据和幂次表示的神经元数据进行神经网络运算。
所述幂次神经元与权值乘法操作具体为,幂次神经元数据符号位与权值数据符号位做异或操作;编码表的对应关系为乱序的情况下查找编码表找出幂次神经元数据幂次位对应的指数数值,编码表的对应关系为正相关的情况下记录编码表的指数数值最小值并做加法找出幂次神经元数据幂次位对应的指数数值,编码表的对应关系为负相关的情况下记录编码表的最大值并做减法找出幂次神经元数据幂次位对应的指数数值;将指数数值与权值数据幂次位做加法操作,权值数据有效位保持不变。
具体实例一如图4所示,权值数据为16位浮点数据,符号位为0,幂次位为10101,有效位为0110100000,则其表示的实际数值为1.40625*26。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为000110,则其表示的实际数值为64,即26。权值的幂次位加上幂次神经元的幂次位结果为11011,则结果的实际数值为1.40625*212,即为神经元与权值的乘积结果。通过该运算操作,使得乘法操作变为加法操作,减小计算所需的运算量。
具体实例二如图5所示,权值数据为32位浮点数据,符号位为1,幂次位为10000011,有效位为10010010000000000000000,则其表示的实际数值为-1.5703125*24。幂次神经元数据符号位为1位,幂次位数据位为5位,即m为5。编码表为幂次位数据为11111的时候对应幂次神经元数据为0,幂次位数据为其他数值的时候幂次位数据对应相应的二进制补码。幂次神经元为111100,则其表示的实际数值为-2-4。(权值的幂次位加上幂次神经元的幂次位结果为01111111,则结果的实际数值为1.5703125*20,即为神经元与权值的乘积结果。
步骤S3,第一幂次转换单元将神经网络运算后的神经元数据转换成幂次表示的神经元数据。
其中,所述步骤S3包括以下子步骤:
S31,输出神经元缓存单元接收所述计算单元发送的神经网络运算后得到的神经元数据;
S32,第一幂次转换单元接收所述输出神经元缓存单元发送的神经元数据,并将其中的非幂次神经元数据转换为幂次神经元数据。
其中,可选的幂次转换操作有多种,根据实际的应用需求选择。本实施例中列举了三种幂次转换操作:
第一种幂次转换方法:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作。
第二种幂次转换方法:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作。
第三种幂次转换方法:
sout=sin
dout+=[log2(din+)]
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
另外,通过幂次转换单元获得的幂次神经元数据可作为神经网络运算下一层的输入幂次神经元,再重复步骤1至步骤3直到神经网络最后一层运算结束。通过改变存储装置预存的整数值x和正整数值y,可以调整神经网络运算装置所能表示的幂次神经元数据范围。
在另一个实施例里,本公开还提供了一种使用所述神经网络运算装置的方法,通过改变存储装置预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换,例如:
本公开的控制装置并不限定于实施例的具体组成结构,所属技术领域的技术人员熟知的可实现存储装置和运算单元之间数据、指令交互的控制装置,均可用于实现本公开。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

Claims (26)

1.一种神经网络运算装置,其特征在于,包括:
存储装置,用于存储数据和指令;
控制装置,与所述存储装置连接,用于控制数据和指令的交互,其接收该存储装置发送的数据和指令,并将指令译码成运算指令;
运算装置,与所述控制装置连接,接收该控制装置发送的数据和运算指令,并根据运算指令对其接收的权值数据和神经元数据执行神经网络运算;以及
输出转换装置,包括第一幂次转换单元,与所述运算装置连接,用于将神经网络运算得到的神经元数据转换为幂次神经元数据。
2.根据权利要求1所述的神经网络运算装置,其特征在于,所述控制装置,包括:
数据控制单元,与所述存储装置连接,用于实现存储装置和各缓存单元之间的数据和指令交互;
指令缓存单元,与所述数据控制单元连接,用于接收该数据控制单元发送的指令;
译码单元,与所述指令缓存单元连接,用于从指令缓存单元中读取指令,并将其译码成运算指令;
输入神经元缓存单元,与所述数据控制单元连接,用于从该数据控制单元获取相应的输入神经元数据;
权值缓存单元,与所述数据控制单元连接,用于从数据控制单元获取相应的权值数据;其中,
所述运算装置,分别与所述译码单元、输入神经元缓存单元及权值缓存单元连接,接收各运算指令、神经元数据及权值数据,根据运算指令对其接收的神经元数据和权值数据执行相应的神经网络运算。
3.根据权利要求2所述的神经网络运算装置,其特征在于,所述第一幂次转换单元的输出端与所述数据控制单元连接,以将其转换成的幂次神经元数据作为下一层神经网络运算的输入数据。
4.根据权利要求3所述的神经网络运算装置,其特征在于,还包括:第二幂次转换单元,与所述存储装置的其中一输入端连接,用于将非幂次神经元数据转换为幂次神经元数据后输入存储装置。
5.根据权利要求1至4中任一项所述的神经网络运算装置,其特征在于,所述幂次神经元数据表示神经元数据的数值采用其幂指数值形式表示,其中,所述幂次神经元数据包括符号位和幂次位,符号位采用一位或多位比特位表示神经元数据的符号,幂次位采用m位比特位表示神经元数据的幂次位数据,m为大于1的正整数。
6.根据权利要求5所述的神经网络运算装置,其特征在于,所述存储装置预存有编码表,用于提供幂次神经元数据的每个幂次位数据对应的指数数值。
7.根据权利要求6所述的神经网络运算装置,其特征在于,所述编码表设置一个或者多个幂次位数据为置零幂次位数据,其对应的幂次神经元数据为0。
8.根据权利要求7所述的神经网络运算装置,其特征在于,所述编码表的对应关系为乱序关系、正相关关系或负相关关系。
9.根据权利要求8所述的神经网络运算装置,其特征在于,最大的幂次位数据对应幂次神经元数据为0或最小的幂次位数据对应幂次神经元数据为0。
10.根据权利要求8所述的神经网络运算装置,其特征在于,所述编码表的对应关系为幂次位数据最高位代表置零位,幂次位数据其他m-1位对应指数数值。
11.根据权利要求8所述的神经网络运算装置,其特征在于,所述编码表的对应关系为正相关关系,存储装置预存一个整数值x和一个正整数值y,最小的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0;其中,x表示偏置值,y表示步长。
12.根据权利要求11所述的神经网络运算装置,其特征在于,最小的幂次位数据对应指数数值为x,最大的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据+x)*y。
13.根据权利要求12所述的神经网络运算装置,其特征在于,y=1,x的数值=-2m-1
14.根据权利要求8所述的神经网络运算装置,其特征在于,所述编码表的对应关系为负相关关系,存储装置预存一个整数值x和一个正整数值y,最大的幂次位数据对应指数数值为x,其他任意一个或多个幂次位数据对应幂次神经元数据为0;其中,x表示偏置值,y表示步长。
15.根据权利要求14所述的神经网络运算装置,其特征在于,最大的幂次位数据对应指数数值为x,最小的幂次位数据对应幂次神经元数据为0,最小和最大的幂次位数据之外的其他的幂次位数据对应指数数值为(幂次位数据-x)*y。
16.根据权利要求15所述的神经网络运算装置,其特征在于,y=1,x的数值等于2m-1
17.根据权利要求1至3中任一项权利要求的神经网络运算装置,其特征在于,所述第一幂次转换单元将神经网络运算后得到的神经元数据转换成幂次神经元数据包括:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作;或,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作;或,
sout=sin
dout+=[log2(din+)]
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
18.根据权利要求4中的神经网络运算装置,其特征在于,所述第二幂次转换单元将非幂次数据转换为幂次数据包括:
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取下整操作;或,
sout=sin
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据,sin为输入数据的符号,sout为输出数据的符号,din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout表示对数据x做取上整操作;或,
sout=sin
dout+=[log2(din+)]
其中,din为幂次转换单元的输入数据,dout为幂次转换单元的输出数据;sin为输入数据的符号,sout为输出数据的符号;din+为输入数据的正数部分,din+=din×sin,dout+为输出数据的正数部分,dout+=dout×sout;[x]表示对数据x做四舍五入操作。
19.一种用于如权利要求1至18中任一项所述的神经网络运算装置的神经网络运算方法,其特征在于,包括:
获取指令、权值数据及神经元数据;
根据运算指令对权值数据和神经元数据进行神经网络运算;
第一幂次转换单元将神经网络运算后得到的神经元数据转换成幂次神经元数据。
20.根据权利要求19所述的神经网络运算方法,其中,获取指令、权值数据及神经元数据,包括:
将指令、神经元数据及权值数据输入存储装置;
数据控制单元接收该存储装置发送的指令、神经元数据及权值数据;
指令缓存单元、输入神经元缓存单元及权值缓存单元分别接收该数据控制单元发送的指令、神经元数据及权值数据。
21.根据权利要求19或20所述的神经网络运算方法,其中,将指令、神经元数据及权值数据输入存储装置还包括,若输入存储装置的神经元数据为幂次神经元数据,则直接输入存储装置;反之,则经所述第二幂次转换单元转换成幂次神经元数据后再输入存储装置。
22.根据权利要求19至21中任一项所述的神经网络运算方法,其中,根据运算指令对权值数据和神经元数据进行神经网络运算,包括:
译码单元从指令缓存单元中读取指令,并将其译码成各运算指令;
运算单元分别接收所述译码单元、输入神经元缓存单元及权值缓存单元发送的运算指令、幂次神经元数据以及权值数据,并根据运算指令对权值数据和幂次表示的神经元数据进行神经网络运算。
23.根据权利要求19至22中任一项所述的神经网络运算方法,其中,第一幂次转换单元将神经网络运算后得到的神经元数据转换成幂次神经元数据,包括:
输出神经元缓存单元接收所述运算单元发送的神经网络运算后得到的神经元数据;
第一幂次转换单元接收所述输出神经元缓存单元发送的神经元数据,并将其中的非幂次神经元数据转换为幂次神经元数据。
24.根据权利要求19至23中任一项所述的神经网络运算方法,还包括:通过第一幂次转换单元获得的幂次神经元数据作为神经网络运算下一层的输入幂次神经元,重复神经网络运算步骤和非幂次神经元数据转换成幂次神经元数据步骤,直到神经网络最后一层运算结束。
25.根据权利要求19至24中任一项所述的神经网络运算方法,其特征在于,通过改变存储装置预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
26.一种使用权利要求11至16中任一项所述的神经网络运算装置的方法,其特征在于,通过改变存储装置预存的整数值x和正整数值y,以调整神经网络运算装置所能表示的幂次神经元数据范围。
CN201710266052.7A 2017-04-06 2017-04-21 一种运算装置和方法 Pending CN108734280A (zh)

Priority Applications (14)

Application Number Priority Date Filing Date Title
CN202210635510.0A CN114970827A (zh) 2017-04-21 2017-04-21 一种运算装置和方法
CN201710266052.7A CN108734280A (zh) 2017-04-21 2017-04-21 一种运算装置和方法
EP19199521.6A EP3620992B1 (en) 2017-04-06 2018-04-04 Neural network processor and neural network computation method
CN201811423421.XA CN109359736A (zh) 2017-04-06 2018-04-04 网络处理器和网络运算方法
CN201880001242.9A CN109219821B (zh) 2017-04-06 2018-04-04 运算装置和方法
EP19199524.0A EP3627437B1 (en) 2017-04-06 2018-04-04 Data screening device and method
EP19199528.1A EP3624018B1 (en) 2017-04-06 2018-04-04 Neural network computation device and method
CN201811413244.7A CN109344965A (zh) 2017-04-06 2018-04-04 运算装置和方法
EP24168317.6A EP4372620A2 (en) 2017-04-06 2018-04-04 Neural network processor and neural network computation method
CN201811423295.8A CN109409515B (zh) 2017-04-06 2018-04-04 运算装置和方法
EP18780474.5A EP3579150B1 (en) 2017-04-06 2018-04-04 Operation apparatus and method for a neural network
PCT/CN2018/081929 WO2018184570A1 (zh) 2017-04-06 2018-04-04 运算装置和方法
EP19199526.5A EP3633526A1 (en) 2017-04-06 2018-04-04 Computation device and method
US16/283,711 US10896369B2 (en) 2017-04-06 2019-02-22 Power conversion in neural networks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710266052.7A CN108734280A (zh) 2017-04-21 2017-04-21 一种运算装置和方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210635510.0A Division CN114970827A (zh) 2017-04-21 2017-04-21 一种运算装置和方法

Publications (1)

Publication Number Publication Date
CN108734280A true CN108734280A (zh) 2018-11-02

Family

ID=63933450

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210635510.0A Pending CN114970827A (zh) 2017-04-21 2017-04-21 一种运算装置和方法
CN201710266052.7A Pending CN108734280A (zh) 2017-04-06 2017-04-21 一种运算装置和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210635510.0A Pending CN114970827A (zh) 2017-04-21 2017-04-21 一种运算装置和方法

Country Status (1)

Country Link
CN (2) CN114970827A (zh)

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 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN105844330A (zh) * 2016-03-22 2016-08-10 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构

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 南京艾溪信息科技有限公司 一种用于稀疏连接的人工神经网络计算装置和方法
CN105844330A (zh) * 2016-03-22 2016-08-10 华为技术有限公司 神经网络处理器的数据处理方法及神经网络处理器
CN106066783A (zh) * 2016-06-02 2016-11-02 华为技术有限公司 基于幂次权重量化的神经网络前向运算硬件结构

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
I.LAZZIZZERA: "Fast and Compact Controllers with Digital Neural Networks", 《INTRUSMENTATION AND MEASUREMENT TECHNOLOGY CONFERENCE》 *
康磊: "采用Karatsuba算法在FPGA上实现双精度浮点乘法", 《西安石油大学学报(自然科学版)》 *

Also Published As

Publication number Publication date
CN114970827A (zh) 2022-08-30

Similar Documents

Publication Publication Date Title
CN109284822A (zh) 一种神经网络运算装置及方法
CN105844330B (zh) 神经网络处理器的数据处理方法及神经网络处理器
CN110909869B (zh) 一种基于脉冲神经网络的类脑计算芯片
JP5840994B2 (ja) 行列演算装置
CN103546158B (zh) 用于图形处理的方法、系统和装置
CN108805266A (zh) 一种可重构cnn高并发卷积加速器
TW200413956A (en) Length-scalable fast Fourier transformation digital signal processing architecture
CN107003986A (zh) 用于利用索引和立即数实行向量重组的方法和装置
CN101655803A (zh) 数学模型仿真的实现方法、移动终端
CN108229648A (zh) 卷积计算方法和装置、电子设备、计算机存储介质
CN103605642B (zh) 一种面向文本输入的自动纠错方法与系统
CN108269226A (zh) 用于处理稀疏数据的装置和方法
JP2022531786A (ja) 高性能なベクトル処理のためのアドレス生成
CN108805271A (zh) 一种运算装置和方法
CN110110132A (zh) 一种建立空间网格体系的方法、装置及遥感影像处理系统
CN107403461A (zh) 使用随机光栅化生成随机采样分布
CN109144471A (zh) 用于二进制向量分解的二进制乘法器
CN111325332A (zh) 卷积神经网络的处理方法和装置
CN108734280A (zh) 一种运算装置和方法
CN108960415B (zh) 处理装置和处理系统
CN112955878A (zh) 实施神经网络的激活逻辑的装置及其方法
CN109634662A (zh) 执行打包数据元素的双有符号和无符号乘法的设备和方法
CN105513000B (zh) 一种图像处理的方法和装置
CN110909305B (zh) 一种实时判断数据流变化同向性及其程度的方法
CN110515681B (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20181102

WD01 Invention patent application deemed withdrawn after publication