一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法制造方法及图纸

技术编号:17485878 阅读:24 留言:0更新日期:2018-03-17 10:18
本披露提供了一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块。本披露提供的技术方案具有计算速度快,效率高的优点。

A device and method for performing forward operation of artificial neural networks that supports discrete data representation

This disclosure provides a device that supports discrete data representation for implementing forward operation of artificial neural network, including controller unit, data access unit, interconnect module, main operation module and multiple slave operation modules. The technical scheme provided by this disclosure has the advantages of fast calculation and high efficiency.

【技术实现步骤摘要】
一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法
本披露涉及一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法。
技术介绍
数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行神经网络的数据计算时速度慢,效率低。
技术实现思路
本披露实施例提供了一种计算方法及相关产品,可提升计算装置的处理速度,提高效率。第一方面,提供一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块,其中:所述指令为卷积神经网络运算指令,包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型;控制器单元用于读取指令,并将该指令译码成控制互联模块、主运算模块、以及从运算模块行为的微指令;数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间读离散数据或连续数据;每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算模块针对不同离散数据采取预先设置的相应计算方式;主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应计算方式。可选的,所述装置还包括:指令缓存单元;用于通过数据访问单元读入指令并缓存读入的指令。可选的,离散数据表示指用特定的离散数字代替真实的连续数据的表示方式。可选的,其中,多个从运算模块利用相同的离散或连续的输入神经元向量和各自不同的离散或连续的权值向量,并行地计算出各自的离散或连续输出神经元值。可选的,其中,主运算模块对中间结果向量执行以下任一项操作:加偏置操作,在中间结果向量上加上偏置;对中间结果向量进行激活,激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者池化操作,包括最大值池化或平均值池化。可选的,其中,从运算模块包括输入神经元缓存单元,用于缓存离散或者连续的输入神经元向量。可选的,其中,互联模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路。可选的,其中,主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其中:神经元缓存单元用于缓存主运算模块在计算过程中用到的离散或连续表示的输入数据和输出数据;运算单元完成主运算模块的各种运算功能,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神经元缓存单元中连续数据或离散数据读写不存在一致性冲突,并且负责从神经元缓存单元读取输入离散或连续的神经元向量,并通过互联模块发送给从运算模块;以及来自互联模块的中间结果向量被发送到运算单元。可选的,其中,每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:运算单元接收控制器单元发出的微指令并进行算数逻辑运算,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;数据依赖关系判断单元负责计算过程中对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写操作,保证对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写不存在一致性冲突;神经元缓存单元缓存输入神经元向量的数据以及该从运算模块计算得到的输出神经元值;以及权值缓存单元缓存该从运算模块在计算过程中需要的离散或连续表示的权值向量。可选的,其中,数据依赖关系判断单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。可选的,其中主运算模块或从运算模块中的运算单元包括运算决定单元和混合数据运算单元,当输入数据是混合数据时,运算决定单元根据其中的离散数据决定应对该混合数据执行何种操作,然后,混合数据运算单元根据运算决定单元的决定结果,执行相应操作。可选的,其中主运算模块或从运算模块中的所述运算单元还包括离散数据运算单元和连续数据运算单元中的至少一个,以及数据类型判断单元,当输入数据全是离散数据时,由离散数据运算单元根据输入的离散数据通过查表执行相应操作,当输入数据全是连续数据时,由连续数据运算单元执行相应操作。可选的,还包括连续离散转换单元,连续离散转换单元包括预处理模块、距离计算模块、和判断模块,假设使用M个离散数据,M=2m,m≥1,令这些离散数据分别对应于预定区间[-zone,zone]内的M个数值,其中:预处理模块对于输入的连续数据x使用clip(-zone,zone)运算进行预处理,得到区间[-zone,zone]内的预处理数据y,其中,如果x≤-zone则y=-zone,如果x≥zone则y=zone,如果-zone<x<zone,则预处理数据y=x;距离计算模块计算预处理数据y与上述各数值之间的距离;以及判断模块基于该距离计算并输出离散数据。可选的,以下任意一项或多项:预定区间[-zone,zone]是[-1,1]或[-2,2];M个数值的绝对值是2的幂的倒数;或者判断模块执行:输出与该预处理数据y距离最近的数值所对应的离散数据,如果有两个数值与该预处理数据距离相等,则输出二者中任一个所对应的离散数据;或者计算预处理数据y分别到距离最近的两个数值中任一个的归一化概率,将这两个数值中任一个所对应的归一化概率与随机数生成模块生成的(0,1)之间的随机数z比较,如果该z小于该概率则输出该离散数据,否则输出另一离散数据。可选的,所述卷积神经网络运算指令包括:卷积计算指令,用于将卷积核w乘以输入数据Xi,进行求和,然后加上偏置b后做激活运算s(h),得到最终的输出结果。可选的,所述卷积神经网络运算指令包括:COMPUTE指令、CONFIG指令、IO指令、NOP指令、JUMP指令或MOVE指令;所述COMPUTE指令包括:卷积神经网络sigmoid指令、卷积神经网络TanH指令、卷积神经网络ReLU指令以及卷积神经网络group指令;所述卷积神经网络sigmoid指令,用于在装置分别从存储器的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,然后根据所述sigmoid指令将输出结果做sigmoid激活;所述卷积神经网络TanH指令,用于在装置分本文档来自技高网...
一种支持离散数据表示的用于执行人工神经网络正向运算的装置及方法

【技术保护点】
一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块,其中:所述指令为卷积神经网络运算指令,包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型;控制器单元用于读取指令,并将该指令译码成控制互联模块、主运算模块、以及从运算模块行为的微指令;数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间读离散数据或连续数据;每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算模块针对不同离散数据采取预先设置的相应计算方式;主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应计算方式。...

【技术特征摘要】
1.一种支持离散数据表示的用于执行人工神经网络正向运算的装置,包括控制器单元、数据访问单元、互联模块、主运算模块、多个从运算模块,其中:所述指令为卷积神经网络运算指令,包括:至少1个操作码和至少1个操作域,其中,所述操作码用于指示所述卷积神经网络运算指令的功能,所述操作域用于指示所述卷积神经网络运算指令的数据信息;所述数据信息包括:立即数或寄存器号,具体包括:输入数据的起始地址和数据长度,卷积核的起始地址和数据长度,以及激活函数的类型;控制器单元用于读取指令,并将该指令译码成控制互联模块、主运算模块、以及从运算模块行为的微指令;数据访问单元用于从外部地址空间向主运算模块和各从运算模块的相应数据缓存单元中写入离散数据或连续数据或从所述数据缓存单元向外部地址空间读离散数据或连续数据;每层神经网络开始正向计算的阶段,主运算模块通过互联模块向所有的从运算模块传输本层的离散或连续的输入神经元向量,在从运算模块的计算过程完成后,互联模块逐级将各从运算模块的离散或连续化的输出神经元值拼成中间结果向量,其中,当输入数据是离散数据与连续数据的混合数据时,从运算模块针对不同离散数据采取预先设置的相应计算方式;主运算模块用于利用中间结果向量完成后续计算,当输入数据是离散数据与连续数据的混合数据时,主运算模块针对不同离散数据采取预先设置的相应计算方式。2.根据权利要求1所述的装置,其特征在于,所述装置还包括:指令缓存单元;用于通过数据访问单元读入指令并缓存读入的指令。3.根据权利要求1所述的装置,其中,离散数据表示指用特定的离散数字代替真实的连续数据的表示方式。4.根据权利要求1所述的装置,其中,多个从运算模块利用相同的离散或连续的输入神经元向量和各自不同的离散或连续的权值向量,并行地计算出各自的离散或连续输出神经元值。5.根据权利要求1所述的装置,其中,主运算模块对中间结果向量执行以下任一项操作:加偏置操作,在中间结果向量上加上偏置;对中间结果向量进行激活,激活函数active是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;采样操作,将中间结果向量与随机数比较,大于随机数则输出1,小于随机数则输出0;或者池化操作,包括最大值池化或平均值池化。6.根据权利要求1所述的装置,其中,从运算模块包括输入神经元缓存单元,用于缓存离散或者连续的输入神经元向量。7.根据权利要求1所述的装置,其中,互联模块构成主运算模块和所述多个从运算模块之间的连续或离散化数据的数据通路。8.根据权利要求1所述的装置,其中,主运算模块包括运算单元、数据依赖关系判断单元和神经元缓存单元,其中:神经元缓存单元用于缓存主运算模块在计算过程中用到的离散或连续表示的输入数据和输出数据;运算单元完成主运算模块的各种运算功能,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;数据依赖关系判断单元是运算单元读写神经元缓存单元的端口,保证对神经元缓存单元中连续数据或离散数据读写不存在一致性冲突,并且负责从神经元缓存单元读取输入离散或连续的神经元向量,并通过互联模块发送给从运算模块;以及来自互联模块的中间结果向量被发送到运算单元。9.根据权利要求1所述的装置,其中,每个从运算模块包括运算单元、数据依赖关系判定单元、神经元缓存单元和权值缓存单元,其中:运算单元接收控制器单元发出的微指令并进行算数逻辑运算,当输入数据是离散数据与连续数据的混合数据时,针对不同离散数据采取预先设置的相应计算方式;数据依赖关系判断单元负责计算过程中对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写操作,保证对支持离散数据表示的神经元缓存单元和支持离散数据表示的权值缓存单元的读写不存在一致性冲突;神经元缓存单元缓存输入神经元向量的数据以及该从运算模块计算得到的输出神经元值;以及权值缓存单元缓存该从运算模块在计算过程中需要的离散或连续表示的权值向量。10.根据权利要求8或9所述的装置,其中,数据依赖关系判断单元通过以下方式保证读写不存在一致性冲突:判断尚未执行的微指令与正在执行过程中的微指令的数据之间是否存在依赖关系,如果不存在,允许该条微指令立即发射,否则需要等到该条微指令所依赖的所有微指令全部执行完成后该条微指令才允许被发射。11.根据权利要求8或9所述的装置,其中主运算模块或从运算模块中的运算单元包括运算决定单元和混合数据运算单元,当输入数据是混合数据时,运算决定单元根据其中的离散数据决定应对该混合数据执行何种操作,然后,混合数据运算单元根据运算决定单元的决定结果,执行相应操作。12.根据权利要求10所述的装置,其中主运算模块或从运算模块中的所述运算单元还包括离散数据运算单元和连续数据运算单元中的至少一个,以及数据类型判断单元,当输入数据全是离散数据时,由离散数据运算单元根据输入的离散数据通过查表执行相应操作,当输入数据全是连续数据时,由连续数据运算单元执行相应操作。13.根据权利要求1所述的装置,还包括连续离散转换单元,连续离散转换单元包括预处理模块、距离计算模块、和判断模块,假设使用M个离散数据,M=2m,m≥1,令这些离散数据分别对应于预定区间[-zone,zone]内的M个数值,其中:预处理模块对于输入的连续数据x使用clip(-zone,zone)运算进行预处理,得到区间[-zone,zone]内的预处理数据y,其中,如果x≤-zone则y=-zone,如果x≥zone则y=zone,如果-zone<x<zone,则预处理数据y=x;距离计算模块计算预处理数据y与上述各数值之间的距离;以及判断模块基于该距离计算并输出离散数据。14.根据权利要求13所述的装置,其特征在于以下任意一项或多项:预...

【专利技术属性】
技术研发人员:陈天石刘少礼王在胡帅
申请(专利权)人:上海寒武纪信息科技有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1