【技术实现步骤摘要】
一种神经网络计算装置和方法
本申请总体上涉及人工神经网络,具体地涉及一种神经网络计算装置和方法。
技术介绍
神经网络又称人工神经网络,人工神经网络被广泛应用于模式识别,图像处理,函数逼近和优化计算等领域,多层人工网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。人工神经网络涉及到多种算法,其中全连接层作为人工神经网络中的一种重要算法,被广泛的应用在各种人工神经网络模型中。现有的神经网络运算基于通用处理器进行神经网络运算,现有的通用处理器,仅仅支持浮点数据的运算,对于神经网络运算,尤其涉及到比较复杂的运算,因此其运算量大,并且内存要求高,现有的神经网络运算基于浮点数据来运算对内存要求较高,因此现有的方案能耗高、成本高。
技术实现思路
本申请的一个方面提供了一种神经网络计算装置及方法,该装置及方法采用定点数据进行运算,相对于浮点数据,定点数据能够节省内存,减少运算量,因此其具有降低能耗,降低成本的优点。一方面,提供一种所述装置用于执行人工神经网络训练计算中 ...
【技术保护点】
1.一种神经网络计算装置,所述装置用于执行人工神经网络训练计算中至少一层第i层反向运算;所述第i层的反向运算中至少有部分数据为定点数据运算, i为大于等于1的整数;所述计算装置包括:控制器单元、运算单元和转换单元,其中,控制器单元与运算单元以及转换单元连接;/n控制器单元,用于获取第i层的输入神经元数据、第i层权值数据、第i层输入神经元梯度以及第i层反向计算指令;/n控制器单元,还用于解析该第i层计算指令得到多个反向运算指令,将第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度发送给转换单元,将该多个运算指令发送给运算单元;/n转换单元,用于将该第i层输入神经元数 ...
【技术特征摘要】
1.一种神经网络计算装置,所述装置用于执行人工神经网络训练计算中至少一层第i层反向运算;所述第i层的反向运算中至少有部分数据为定点数据运算,i为大于等于1的整数;所述计算装置包括:控制器单元、运算单元和转换单元,其中,控制器单元与运算单元以及转换单元连接;
控制器单元,用于获取第i层的输入神经元数据、第i层权值数据、第i层输入神经元梯度以及第i层反向计算指令;
控制器单元,还用于解析该第i层计算指令得到多个反向运算指令,将第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度发送给转换单元,将该多个运算指令发送给运算单元;
转换单元,用于将该第i层输入神经元数据、第i层权值数据以及第i层输入神经元梯度中的全部或部分执行浮点类型与定点类型转换得到全部定点数据或混合数据,将全部定点数据或混合数据发送给运算单元,该混合数据包括:部分定点数据以及部分浮点数据;
运算单元,用于依据多个正向运算指令对全部定点数据执行定点运算或对混合数据执行混合运算得到第i层的权值梯度以及第i层输出结果梯度;
所述混合运算包括:对部分定点数据执行定点运算以及对部分浮点数据执行浮点运算。
2.根据权利要求1所述的计算装置,其特征在于,
所述转换单元,具体用于将第i层输入神经元数据的部分转换成部分定点输入神经元数据、将第i层权值数据的部分转换成部分定点权值数据以及将第i层输入神经元梯度转换成部分定点输入神经元梯度;将部分定点输入神经元数据、部分定点输入神经元梯度以及部分定点权值数据发送给运算单元,将部分输入神经元数据、部分输入神经元梯度和部分权值数据发送给运算单元;
运算单元,具体用于将部分定点输入神经元梯度以及部分定点输入数据执行定点数据运算得到部分第i层权值梯度,将部分定点输入神经元梯度与部分定点权值数据执行定点数据运算得到部分第i层输出结果梯度,将部分第i层权值梯度以及部分第i层输出结果梯度发送给转换单元,
转换单元,具体用于将该部分第i层权值梯度以及部分第i层输出结果梯度执行定点与浮点转换得到第一部分第i层权值梯度以及第一部分第i层输出结果梯度,将第一部分第i层权值梯度以及第一部分第i层输出结果梯度发送给运算单元;
运算单元,具体用于将部分输入神经元梯度以及部分输入数据执行运算得到第二部分第i层权值梯度,将部分输入神经元梯度与部分权值数据执行运算得到第二部分第i层输出结果梯度,将第一部分第i层权值梯度和第二部分第i层权值梯度结合起来得到第i层权值梯度,将第一部分第i层输出结果梯度和第二部分第i层输出结果梯度结合起来得到第i层输出结果梯度。
3.根据权利要求1所述的计算装置,其特征在于,
所述转换单元,具体用于确定浮点数的小数点位置point;
其中,maxabs为需要转换的浮点数据中的最大绝对值,width为定点数的位宽;
其中,float=int*2point;所述float为浮点数的值,int为定点数的值。
4.根据权利要求1所述的装置,其特征在于,所述获取第i层输入神经元梯度的方法具体包括:
所述控制器单元,具体用于接收第i+1层输出结果梯度,将第i+1层输出结果梯度发送至运算单元;
所述运算单元,具体用于依据第i+1层输出结果梯度得到第i层输入神经元梯度;
第i层输入神经元梯度=f′*第i+1层输出结果梯度;
其中f′为激活函数f的导函数。
5.根据权利要求1所述的装置,其特征在于,所述运算单元包括:主处理电路和多个从处理电路;其中,
所述主处理电路,用于对数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路,用于依据多个中间结果得到第i层输出结果梯度、第i层权值梯度。
6.根据权利要求5所述的装置,其特征在于,
所述主处理电路,具体用于将该第i层输入神经元数据分发发送给各个从处理电路,将第i层输入神经元梯度传送到各个从处理电路,每个从处理电路将第i层输入神经元梯度in_gradient中与该从处理电路相对应的标量数据以及第i层输入神经元数据相乘,得到每个从处理电路的第i层的原始权值更新梯度向量dw_original,采用原始权值更新梯度向量dw_original与每个从处理电路的权值相乘得到各个从处理电路的更新权值。
7.根据权利要求6所述的装置,其特征在于,
所述主处理电路,具体用于在所有层的原始权值更新梯度向量计算得到后,计算所有层的原始权值更新梯度的平方和sumsq_diff,然后对sumsq_diff进行开方得到l2norm_diff,如果l2norm_diff大于clip_gradient,计算缩放因子scale_factor=clip_gradient/l2norm_diff,所有的原始权值更新梯度dw_original分别乘以缩放因子scale_factor,得到权值更新梯度dw’,将更新梯度dw’发送给每个从处理电路;
从处理电路,具体用于使用权值更新梯度dw’乘以权值得到第i层各个从处理电路的更新权值。
8.根据权利要求5-7任意一项所述的装置,其特征在于,所述主处理电路以及从处理电路均包括存储模块;
所述存储模块,用于存储数据;
所述存储模块还包括至少一个共享区域,所述共享区域为主处理电路或从处理电路共享使用的存储空间。
9.根据权利要求5-7任意一项所述的装置,其特征在于,所述运算单元还包括:分支处理电路;
所述分支处理电路设置在主处理电路与多个从处理电路之间,实现主处理电路与多个从处理电路之间的数据以及运算指令的转发。
10.根据权利要求9所述的装置,其特征在于,所述分支处理电路包括:存储模块,所述存储模块包括至少一个共享区域,所述共享区域为主处理电路和从处理电路共享使用的存储空间。
11.根据权利要求1所述的装置,其特征在于,所述装置还包括树型模块,所述互连模块为由多个节点构成的n叉树通路,所述n叉树的上游节点的数据同样地发送至下游得了n个节点,以及将下游的n个节点返回的数据进行合并后发送给上游节点,所述n为大于等于2的整数。
12.根据权利要求4所述的装置,其中,所述激活函数f是非线性函数sigmoid,tanh,relu,softmax中的任一个或线性函数;
所述运算指令包括:CONFIG指令、COMPUTE指令、IO指令、NOP指令、JUMP指令或MOVE指令。
13.根据权利要求5-7任意一项所述的装置,其中,所述...
【专利技术属性】
技术研发人员:不公告发明人,
申请(专利权)人:上海寒武纪信息科技有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。