[发明专利]一种基于FPGA实现稀疏化GRU神经网络的硬件加速器及方法有效
申请号: | 201611105597.1 | 申请日: | 2016-12-05 |
公开(公告)号: | CN107229967B | 公开(公告)日: | 2021-06-15 |
发明(设计)人: | 谢东亮;韩松;单羿 | 申请(专利权)人: | 赛灵思公司 |
主分类号: | G06N3/04 | 分类号: | G06N3/04;G06N3/063 |
代理公司: | 北京卓孚律师事务所 11821 | 代理人: | 任宇 |
地址: | 美国加利福尼亚*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga 实现 稀疏 gru 神经网络 硬件 加速器 方法 | ||
1.一种用于实现稀疏化GRU神经网络的装置,包括:
输入接收单元,用于接收多个输入向量,并将多个输入向量分配到多个计算单元;
多个计算单元,从所述输入接收单元获取输入向量,读取神经网络权值矩阵数据,将其解码后与输入向量进行矩阵运算,并将矩阵运算结果输出至隐含层状态计算模块;
隐含层状态计算模块,从所述计算单元PE获取矩阵运算结果,计算出隐含层状态;
控制单元,用于进行全局控制,
其中,所述隐含层状态计算模块进一步包括:
数据组合单元,用于接收从各个计算单元中的缓存单元输出的矩阵运算的结果,并将其组合成一个完整的运算结果输出至加法器;
选择器,从数据组合单元模块和从点乘器接收数据,选择其中之一输入到加法器;
Wx缓存单元,接收并存储从数据组合单元中输出的矩阵运算计算结果,再根据控制单元的指令将相应运算结果输出至加法器进行计算;
加法器,针对分配到所述多个计算单元的各个输入向量,完成GRU神经网络算法中的向量累加操作;
函数单元,与所述加法器连接,用于实现激活函数;
点乘器,从数据组合单元和函数单元接收数据,进行点乘运算,并将运算结果输出至选择器。
2.根据权利要求1所述的装置,所述每个计算单元进一步包括:
稀疏矩阵读取单元,用于读取所述神经网络的权重矩阵W,其中所述权重矩阵W被用于表示所述神经网络中的权重;
运算单元,用于执行所述神经网络的乘法运算和加法运算;
运算缓存单元,用于存储从所述运算单元中输出的矩阵运算的中间结果以及最终计算结果,并将矩阵运算中间结果输出至运算单元,并且将矩阵运算最终计算结果输出至数据组合单元。
3.根据权利要求1或2所述的装置,输入接收单元还包括:
多个先进先出缓存单元,各个先进先出缓存单元与各个计算单元相对应。
4.根据权利要求2所述的装置,其中所述稀疏矩阵读取单元包括:
位置单元,用于读取存储稀疏权重矩阵W中的各个非零权重值的位置信息;
解码单元,用于编码权重矩阵进行解码,以获得稀疏矩阵中的非零权重值。
5.根据权利要求2所述的装置,其中所述运算单元包括:
乘法器,其中所述乘法器读取输入向量和权重值以进行对应的乘法计算;
加法器,对所述乘法运算的结果进行加法计算。
6.根据权利要求2所述的装置,所述运算缓存单元还包括:
第一输出缓冲器和第二输出缓冲器,所述第一、第二输出缓冲器交替地接收并输出各个计算结果,其中在一个输出缓冲器接收当前计算结果时,另一个输出缓冲器输出前一个计算结果。
7.根据权利要求1或2所述的装置,还包括:
缓存单元,接收并存储函数单元输出的结果,并将其输出至点乘加单元,用于计算隐含层状态;
Zt缓存单元,接收并存储函数单元输出的结果,并将其输出至点乘加单元,用于计算隐含层状态;
点乘加单元,从缓存单元,Zt缓存单元以及向量缓存单元读取向量进行点乘及加法运算,计算出隐含层状态;
向量缓存单元,用于存储各个隐含层状态的计算结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于赛灵思公司,未经赛灵思公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611105597.1/1.html,转载请声明来源钻瓜专利网。