一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于执行LSTM神经网络运算的装置和运算方法与流程

2021-10-24 04:33:00 来源:中国专利 TAG:运算 神经网络 装置 用于 执行

技术特征:
1.一种用于执行lstm神经网络运算的装置,其特征在于,包括:并列设置的多个数据缓存单元,每个所述数据缓存单元包括权值、偏置和一份完整的输入数据,其中,每个数据缓存单元中读入的权值和偏置为总的权值和偏置的一部分;并列设置的多个数据处理模块,与所述多个并行设置的数据缓冲单元一一对应,且所述多个数据处理模块之间执行并行运算,每个所述数据处理模块用于从对应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行lstm神经网络运算,以得到每个所述数据处理模块中的输出值,并写回到所述数据缓存单元;待所有所述数据处理模块中的输出值写回到数据缓存单元后,将各个数据处理模块中的输出值通过拼接得到最终的输出值。2.根据权利要求1所述的装置,其特征在于,每个所述数据处理模块用于通过分别计算lstm神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值来进行所述lstm神经网络运算的向量运算。3.根据权利要求2所述的装置,其特征在于,每一个所述数据处理模块分别用于将其对应的数据缓冲单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每一个所述数据处理模块还用于从对应的数据缓冲单元读取一份权值和输入数据计算得到部分和,再从所述数据缓冲单元中取出之前得到的部分和,对部分和进行向量加,得到新的部分和,送回到所述数据缓冲单元中,其中所述部分和的初始值为偏置值;待数据处理模块获取到所有输入数据后,得到的部分和即为神经元对应的净激活量,然后数据处理模块还用于获取神经元的净激活量,通过非线性函数tanh或sigmoid函数变换得到神经元的输出值。4.根据权利要求3所述的装置,其特征在于,所述数据处理模块还用于获取所述忘记门和旧的状态单元,计算得到部分和,写回到所述数据缓存单元中;所述数据处理模块还用于获取待选状态单元和输入门,计算得到部分和,将数据缓存单元中的部分和写入到数据处理模块中与之前计算得到的部分和进行向量加得到更新后的状态单元,并将其写回到数据缓存单元中;所述数据处理模块还用于获取输出门,与更新后的状态单元的非线性变换函数tanh变换后的值进行向量点乘得到输出值,并将输出值写回到数据缓存单元中;每个数据缓存单元中得到对应的更新后的状态单元以及输出值,所有数据缓存单元中的输出值合并即为最终的输出值。5.根据权利要求4所述的装置,其特征在于,所述每个数据处理模块中均采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述lstm神经网络运算,以得到每个所述数据处理模块的输出值;所述数据处理模块中的向量乘部件和求和部件用于完成部分和的计算;数据处理模块中的向量点乘部件用于计算出旧状态单元与忘记门、待选状态单元与输入门的点乘,然后将这两个结果通过向量加部件运算得到更新后的状态单元;数据处理模块中的向量非线性函数转换部件用于与更新后的状态单元完成tanh函数的转换;向量点乘部件用于将输出门与更新后的状态单元经过tanh非线性变换后的向量进行
运算,得到最终的神经元输出值。6.根据权利要求5所述的装置,其特征在于,所述向量非线性函数转换部件通过查表方法进行函数表示。7.根据权利要求4所述的装置,其特征在于,每个所述数据处理模块还用于判断当前忘记门、输入门以及待选状态单元向量值计算是否完成;若完成,则进行新的状态单元的计算。8.根据权利要求4或7所述的装置,其特征在于,每个所述数据处理模块还用于判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成;如果计算完成,将输出门与待更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值。9.根据权利要求1所述的装置,其特征在于,所述装置还包括:直接内存访问单元,用于从所述用于执行lstm神经网络运算的装置外部的地址空间获取指令和lstm神经网络运算所需的输入数据、权值和偏置,并将其中的指令和输入数据、权值和偏置分别传输给指令缓存单元和对应的数据缓存单元,以及从数据处理模块或数据缓存单元将运算结果写回到外部的地址空间;指令缓存单元,用于缓存直接内存访问单元从外部的地址空间获取的指令,并输入到控制器单元;控制器单元,用于从指令缓存单元中读取指令,并将指令译码成微指令,用于控制直接内存单元进行数据io操作、数据处理模块进行相关运算和数据缓存单元进行数据缓存和传输。10.根据权利要1所述的装置,其特征在于,每一个所述数据处理模块包括数据处理控制子模块、数据依赖判别子模块及数据运算子模块,其中:数据处理控制子模块用于控制数据运算子模块所进行的运算;数据依赖判别子模块用于对当前的运算是否存在数据依赖进行判断。11.根据权利要10所述的装置,其特征在于,对于存在数据依赖关系的运算,数据处理控制子模块首先会用于控制数据依赖判别子模块对当前的运算是否存在数据依赖进行判断,如果存在数据依赖关系,数据处理控制子模块用于使数据运算子模块中插入空操作,等到数据依赖关系解除之后,再控制数据运算子模块进行数据运算;数据依赖判别子模块受数据处理控制子模块控制,用于检查数据运算子模块中是否存在数据依赖关系;如果下次进行的操作需要用到当前尚未运算完成的值,则说明当前存在数据依赖,否则,则不存在数据依赖;数据运算子模块受数据处理模块子模块的控制,用以完成lstm神经网络运算过程中的数据处理。12.根据权利要求11所述的装置,其特征在于,所述数据依赖判别子模块进行数据依赖检测时,用于:在数据运算子模块中存在五个寄存器rl、r2、r3、r4、r5,分别用来标记输入门、忘记门、输出门、待选状态单元以及更新后的状态单元的tanh函数转换运算是否完成,寄存器的值非0表示运算完成,为0表示尚未完成;对应lstm网络,数据依赖判别子模块会判断两次数据依赖,分别为计算新的状态单元时判断输入门、输出门以及带选状态单元之间是否存在数
据依赖和计算输出值时判断输出门与更新后的状态单元的tanh函数转换是否存在数据依赖,分别判断r1、r3、r4是否都非0和r2、r5是否都非0。13.一种执行lstm神经网络运算的方法,其特征在于,所述方法包括:将输入数据、权值、偏置写入到多个数据缓冲单元,其中,每个数据缓存单元都包括一份完整的输入数据,每个数据缓存单元中的权值和偏置为总的权值和偏置的一部分;从所述多个数据缓存单元中获取所述输入数据和运算时所需的权值和偏置至多个数据处理模块,进行lstm神经网络运算,以得到每个所述数据处理模块中的输出值,并写回到所述数据缓存单元,其中,所述多个数据处理模块,与所述多个并行设置的数据缓冲单元一一对应,且所述多个数据处理模块之间执行并行运算;待所有所述数据处理模块中的输出值写回到数据缓存单元后,将各个数据处理模块中的输出值通过拼接得到最终的输出值。14.根据权利要求13所述的方法,其特征在于,所述从所述多个数据缓存单元中获取所述输入数据和运算时所需的权值和偏置至多个数据处理模块,进行lstm神经网络运算,包括:分别计算lstm神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值来进行所述lstm神经网络运算的向量运算。15.根据权利要求14所述的方法,其特征在于,所述分别计算出lstm神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值,包括:将每个数据缓冲单元中的权值和输入数据分割成若干份,其中每份的权值或输入数据的数量与对应的单个数据处理模块中向量运算单元运算的数量相同;每次将一份权值和输入数据计算得到部分和,再与之前得到的部分和进行向量加,得到新的部分和,其中所述部分和的初始值为偏置值;待所有输入数据均进行了处理之后,得到的部分和即为神经元对应的净激活量,通过非线性函数tanh或sigmoid函数变换所述神经元的净激活量,得到所述神经元的输出值;通过这种方式使用不同的权值和偏置,重复上述步骤,分别计算出lstm神经网络运算中的忘记门、输入门、输出门以及待选状态单元的向量值。16.根据权利要求15所述的装置,其特征在于,所述方法还包括:将所述忘记门和旧的状态单元送入到数据处理模块中,计算得到部分和,写回到所述数据缓存单元中;将待选状态单元和输入门送入到数据处理模块中,计算得到部分和,将数据缓存单中的部分和写入到数据处理模块中与之前计算得到的部分和进行向量加得到更新后的状态单元,并将其写回到数据缓存单元中;将输出门送入到数据处理模块中,与更新后的状态单元的非线性变换函数tanh变换后的值进行向量点乘得到输出值,并将输出值写回到数据缓存单元中;每个数据缓存单元中得到对应的更新后的状态单元以及输出值后,所有数据缓存单元中的输出值合并即为最终的输出值。17.根据权利要求16所述的方法,其特征在于,所述数据处理模块采用向量点乘部件、向量加法部件、向量求和部件和向量非线性函数转换部件进行所述lstm神经网络运算,以得到每个所述数据处理模块的输出值;包括:
所述数据处理模块中的向量乘部件和求和部件完成部分和的计算;通过数据处理模块中的向量点乘部件计算出旧状态单元与忘记门、待选状态单元与输入门的点乘,然后将这两个结果通过向量加部件运算得到更新后的状态单元;将数据处理模块中更新后的状态单元利用向量非线性函数转换部件完成tanh函数的转换;将输出门与更新后的状态单元经过tanh非线性变换后的向量通过向量点乘部件运算得到最终的神经元输出值。18.根据权利要求17所述的方法,其特征在于,所述向量非线性函数转换通过查表方法进行函数表示。19.根据权利要求16所述的方法,其特征在于,所述方法还包括:判断当前忘记门、输入门以及待选状态单元向量值计算是否完成;若完成,则进行新的状态单元的计算。20.根据权利要求16或19所述的方法,其特征在于,所述方法还包括:判断当前更新后的数据状态单元的非线性变换和输出门是否计算完成;如果计算完成,将输出门与待更新后的数据状态单元非线性变换后的向量通过向量点乘部件进行计算得到最终的输出值。21.根据权利要求1所述的方法,其特征在于,所述方法还包括:直接内存单元从外部指定地址空间读取用于lstm神经网络运算的权重和偏置,并将其写入到多个并行设置的数据缓冲单元,对各数据缓存单元的状态单元进行初始化;其中,从外部指定地址空间读取的权值和偏置对应于所述lstm神经网络运算的神经元而被分割送入到各相应数据缓冲单元,各数据缓冲单元中的权值和偏置的数量分别相同;在指令缓存单元的首地址处预先存入一条io指令;从所述指令缓存单元中读取指令,并将指令译码成微指令,并控制所述直接内存单元进行数据io操作、数据处理模块进行相关运算和数据缓存单元进行数据缓存和传输。22.根据权利要1所述的方法,其特征在于,每一个所述数据处理模块包括数据处理控制子模块、数据依赖判别子模块及数据运算子模块,所述方法还包括:数据处理控制子模块控制数据运算子模块所进行的运算;数据依赖判别子模块对当前的运算是否存在数据依赖进行判断。23.根据权利要22所述的方法,其特征在于,所述数据处理控制子模块控制数据运算子模块所进行的运算,包括:对于存在数据依赖关系的运算,数据处理控制子模块首先会控制数据依赖判别子模块对当前的运算是否存在数据依赖进行判断,如果存在数据依赖关系,数据处理控制子模块会使数据运算子模块中插入空操作,等到数据依赖关系解除之后,再控制数据运算子模块进行数据运算;数据依赖判别子模块受数据处理控制子模块控制,检查数据运算子模块中是否存在数据依赖关系;如果下次进行的操作需要用到当前尚未运算完成的值,则说明当前存在数据依赖,否则,则不存在数据依赖;数据运算子模块受数据处理模块子模块的控制,用以完成lstm神经网络运算过程中的数据处理。
24.根据权利要求23所述的方法,其特征在于,所述数据依赖判别子模块进行数据依赖检测的步骤,包括:在数据运算子模块中存在五个寄存器rl、r2、r3、r4、r5,分别用来标记输入门、忘记门、输出门、待选状态单元以及更新后的状态单元的tanh函数转换运算是否完成,寄存器的值非0表示运算完成,为0表示尚未完成;对应lstm网络,数据依赖判别子模块会判断两次数据依赖,分别为计算新的状态单元时判断输入门、输出门以及带选状态单元之间是否存在数据依赖和计算输出值时判断输出门与更新后的状态单元的tanh函数转换是否存在数据依赖,分别判断r1、r3、r4是否都非0和r2、r5是否都非0。

技术总结
一种用于执行LSTM神经网络运算的装置和运算方法。该装置包括直接内存访问单元、指令缓存单元、控制器单元、并列设置的多个数据缓存单元和并列设置的多个数据处理模块,其中所述多个数据处理模块与所述数据缓存单元一一对应,用于从相应数据缓存单元中获取输入数据和运算时所需的权值和偏置,进行LSTM神经网络运算;所述多个数据处理模块之间执行并行运算。本发明采用专用指令运行,运算所需指令数大幅减少,译码开销降低;将权值和偏置缓存,使得数据传输开销降低;本发明不限制具体应用领域,可在诸如语音识别、文本翻译、音乐合成等领域使用,可扩展性强;多个数据处理模块并行运行,显著提高LSTM网络的运算速度。显著提高LSTM网络的运算速度。显著提高LSTM网络的运算速度。


技术研发人员:陈云霁 陈小兵 刘少礼 陈天石
受保护的技术使用者:上海寒武纪信息科技有限公司
技术研发日:2016.12.30
技术公布日:2021/10/23
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜