一种基于FPGA的CNN_LSTM算法的神经网络加速器制造技术

技术编号:35832965 阅读:19 留言:0更新日期:2022-12-03 14:02
本发明专利技术请求保护一种基于FPGA的CNN_LSTM算法的神经网络加速器,CNN硬件实现部分包括数据输入行缓存模块,卷积计算模块,Relu激活函数模块,中间结果缓存模块,池化计算模块;LSTM硬件实现部分包括LSTM控制模块,门函数计算模块,Sigmoid激活函数线性近似模块;FC硬件实现部分包括FC控制模块,全连接层计算模块,Relu激活函数模块,数据输出缓存。本发明专利技术目的在于能够结合具体的应用场景设计出高性能、低功耗、灵活性强的CNN_LSTM神经网络加速器。创新点在于相比较传统的神经网络加速器,本发明专利技术使用并行流水的设计方法实现了CNN

【技术实现步骤摘要】
一种基于FPGA的CNN_LSTM算法的神经网络加速器


[0001]本专利技术属于计算机硬件加速
,具体涉及到一种基于FPGA的CNN_LSTM算法的神经网络加速器的并行流水设计方法的研究。

技术介绍

[0002]目前,深度神经网络(DNN)的快速发展,在许多人工智能应用中取得了显著的成绩。卷积神经网络(CNN)在目标检测和图像分类方面做出了巨大贡献。递归神经网络(RNN)专注于时间序列问题,并在语音识别、数据预测中显示出巨大的优势。随着应用场景的多样化和复杂性,人们对时间序列预测方法研究的也不断深入,人们发现单纯的时间序列分析方法有一定的局限性。近年来出现了一种CNN

RNN混合深度学习模型,它将CNN和RNN集成到一个网络框架中。在这些模型中,CNN负责提取网络特征,然后将其发送到RNN以建立序列联系,这在图像字幕、股票走势预测、锂电池荷电状态预测和视频检测中广泛使用。
[0003]目前,在FPGA上实现DNN已成为一个热门的研究方向,FPGA独特的架构使高性能、低功耗的深度学习加速器设计成为可能。CNN

RNN混合深度神经网络加速器的研究越来越受到重视。与传统RNN网络相比,LSTM使用LSTM单元替换隐藏层节点,从而解决了传统RNN中的长期依赖问题。CNN具有提取输入数据显著特征的能力,而LSTM具有长短时记忆的特征。因此,CNN

LSTM混合模型可以对输入数据在空间维度和时间维度上建立相关性。根据CNN和LSTM的网络特性,建立了基于CNN

LSTM算法的神经网络预测模型。与单独的CNN和LSTM相比,该模型的预测精度显著提高。由于混合神经网络的硬件加速器实现的比较少,本专利技术通过将CNN卷积神经网络硬件和LSTM长短期记忆神经网络硬件串联实现CNN_LSTM神经网络加速器,通过FPGA实现了CNN_LSTM算法的硬件加速器。
[0004]通常计算任务从表现形式上面可以分为:软件任务和硬件任务。常见的硬件加速技术有专用集成电路(ASIC)、现场可编程逻辑门阵列(FPGA)和图形处理器(GPU)。ASIC是为特定用途设计开发的集成电路芯片,其具有高性能、低功耗、面积小等特点。FPGA简化了逻辑任务设计,设计周期比ASIC更短,并且FPGA拥有可重构的特点,灵活性好,方便用户动态重构功能模块。GPU适用于大量数据的并行计算,具有高带宽、高主频、高并行性特点。但GPU的的高能耗对其应用造成了一定的限制。而相比于GPU,FPGA在功耗方面具有很大的优势。
[0005]CN112949845A,一种基于FPGA的深度卷积神经网络的加速器,所述加速器包括:快速卷积运算模块和二维卷积内存交互模块;所述快速卷积运算模块,用于将轻量的快速乘法和Winograd算法结合,实现深度卷积神经网络的快速卷积运算;所述二维卷积内存交互模块,用于在快速卷积运算过程中,将中间计算结果和权重采用梯形复用的内存交互优化策略进行片外和片内之间的数据传输,使片内外的数据交互达到最小。本专利技术的加速器一方面用快速乘法对Winograd卷积算法进行改进,进一步提高Winograd计算卷积的速度;另一方面提出了一种梯形复用的内存交互优化策略,它能减小片内外内存交互的时延。

技术实现思路

[0006]本专利技术旨在解决以上现有技术的问题。提出了一种基于FPGA的CNN_LSTM算法的神经网络加速器。所述加速器包括:CNN卷积运算模块和LSTM计算模块;所述CNN卷积运算模块,用于将二维卷积神经网络通过乘法器和加法树的结构进行硬件实现,实现CNN卷积神经网络的卷积运算;所述LSTM运算模块,用于将LSTM长短期记忆神经网络通过乘累加结构和Sigmoid激活函数线性近似进行硬件实现,实现LSTM神经网络的运算。本专利技术提出的加速器一方面是对CNN_LSTM算法的硬件实现,另一方面是通过并行流水的数据流动形式进行加速器设计,提高了加速器的吞吐率,降低了加速器的功耗。
[0007]本专利技术的技术方案如下:
[0008]一种基于FPGA的CNN_LSTM算法的神经网络加速器,其包括:
[0009]CPU:用于将输入数据通过传输数据总线发送到输入缓存模块,将权重、偏置参数发送给参数RAM模块中;
[0010]总线:包括数据总线和控制总线,数据总线负责CPU与FPGA之间的数据传输;控制总线负责CPU与FPGA之间控制信号指令的传输;
[0011]输入输出缓存:用于通过数据总线缓存CPU传送给FPGA的待处理数据和FPGA传送给CPU的处理完成的数据;
[0012]CNN卷积运算模块:负责对输入缓存模块输入的数据与CNN权重偏置RAM的数据进行卷积、激活、池化逻辑运算;
[0013]LSTM运算模块:负责对CNN卷积运算模块输出的数据与LSTM权重偏置RAM的数据进行乘累加逻辑运算;
[0014]FC运算模块:负责对LSTM运算模块输出的数据与FC权重偏置RAM的数据进行乘累加逻辑运算。
[0015]进一步的,所述CNN卷积运算模块包括数据输入行缓存模块,卷积计算模块,Relu激活函数模块,中间结果缓存模块,池化计算模块;数据输入行缓存模块用于将输入缓存中数据缓冲成卷积核大小的一列,按列输入到卷积计算模块中进行乘累加计算;卷积计算模块用于提取数据的多种特征,卷积运算可以看作是由若干个乘累加计算组成,卷积就按得出的结果输入到激活函数模块;Relu激活函数模块用于增加神经网络各层之间的非线性关系,Relu激活函数由简单的比较器实现,通过激活函数的结果输入到中间结果缓存模块中用于下一层卷积计算,中间结果缓存模块用于存储加速器中间计算结果的模块,缓存的作用就是将上一层计算的数据存储起来,当下一层神经网络再次请求此数据时,直接从缓存中获取而省略数据处理流程,从而降低资源的消耗提高响应速度;池化计算模块用于对卷积层的输出特征数据进行进一步特征压缩,剔除冗余的特征信息,防止网络的过拟合化,使CNN模型具有更高的容错能力。
[0016]进一步的,所述LSTM运算模块包括LSTM控制模块,门函数计算模块,Sigmoid激活函数线性近似模块;LSTM控制模块用于控制LSTM模块的权重偏置的读取与数据流的传递,门函数计算模块用于实现LSTM模块中的乘加操作,计算出各个门的结果,Sigmoid激活函数线性近似模块用于实现Sigmoid激活函数的硬件近似,通过对Sigmoid激活函数的分段线性近似,对神经网络模型加入非线性因素,提高神经网络对模型的表达能力。
[0017]进一步的,所述FC运算模块包括FC控制模块、全连接层计算模块、Relu激活函数模
块及数据输出缓存,FC控制模块用于控制FC模块的权重偏置的读取与数据流的传递、全连接层计算模块用于通过传统的乘加操作实现全连接层的向量内积计算、Relu激活函数模块用于增加神经网络各层之间的非线性关系、及数据输出缓存用于暂时存放加速器计算完成后送往CPU的数据。
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的CNN_LSTM算法的神经网络加速器,其特征在于,包括:CPU:用于将输入数据通过传输数据总线发送到输入缓存模块,将权重、偏置参数发送给参数RAM模块中;总线:包括数据总线和控制总线,数据总线负责CPU与FPGA之间的数据传输;控制总线负责CPU与FPGA之间控制信号指令的传输;输入输出缓存:用于通过数据总线缓存CPU传送给FPGA的待处理数据和FPGA传送给CPU的处理完成的数据;CNN卷积运算模块:负责对输入缓存模块输入的数据与CNN权重偏置RAM的数据进行卷积、激活、池化逻辑运算;LSTM运算模块:负责对CNN卷积运算模块输出的数据与LSTM权重偏置RAM的数据进行乘累加逻辑运算;FC运算模块:负责对LSTM运算模块输出的数据与FC权重偏置RAM的数据进行乘累加逻辑运算。2.根据权利要求1所述的一种基于FPGA的CNN_LSTM算法的神经网络加速器,其特征在于,所述CNN卷积运算模块包括数据输入行缓存模块,卷积计算模块,Relu激活函数模块,中间结果缓存模块,池化计算模块;数据输入行缓存模块用于将输入缓存中数据缓冲成卷积核大小的一列,按列输入到卷积计算模块中进行乘累加计算;卷积计算模块用于提取数据的多种特征,卷积运算可以看作是由若干个乘累加计算组成,卷积就按得出的结果输入到激活函数模块;Relu激活函数模块用于增加神经网络各层之间的非线性关系,Relu激活函数由简单的比较器实现,通过激活函数的结果输入到中间结果缓存模块中用于下一层卷积计算,中间结果缓存模块用于存储加速器中间计算结果的模块,缓存的作用就是将上一层计算的数据存储起来,当下一层神经网络再次请求此数据时,直接从缓存中获取而省略数据处理流程,从而降低资源的消耗提高响应速度;池化计算模块用于对卷积层的输出特征数据进行进一步特征压缩,剔除冗余的特征信息,防止网络的过拟合化,使CNN模型具有更高的容错能力。3.根据权利要求1所述的一种基于FPGA的CNN_LSTM算法的神经网络加速器,其特征在于,所述LSTM运算模块包括LSTM控制模块,门函数计算模块,Sigmoid激活函数线性近似模块;LSTM控制模块用于控制LSTM模块的权重偏置的读取与数据流的传递,门函数计算模块用于实现LSTM模块中的乘加操作,计算出各个门的结果,Sigmoid激活函数线性近似模块用于实现Sigmoid激活函数的硬件近似,通过对Sigmoid激活函数的分段线性近似,对神经网络模型加入非线性因素,提高神经网络对模型的表达能力。4.根据权利要求1所述的一种基于FPGA的CNN_LSTM算法的神经网络加速器,其特征在于,所述FC运算模块包括FC控制模块、全连接层计算模块、Relu激活函数模块及数据输出缓存,FC控制模块用于控制FC模块的权重偏置的读取与数据流的传递,全连接层计算模块用于通过传统的乘加操作实现全连接层的向量内积计算,Relu激活函数模块用于增加神经网络各层之间的非线性关系,及数据输出缓存用于暂时存放加速器计算完成后送往CPU的数据。5.根据权利要求2所述的一种基于FPGA的CNN_LSTM算法的神经网络加速器,其特征在于,在CNN卷积运算模块的一个卷积层中,包含若干个特征平面,每个特征平面由一些矩形
排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核;卷积核以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值;卷积层是构建卷积神经网络的核心层,它产生了网络中大部分的计算量;其中是卷积计算结果通过激活函数f的输出,是第l层卷积i行j列的权重,是输入,是卷积的偏置项,f是Relu激活函数;子采样也叫做池化(pooling),有均值子采样和最大值子采样两种...

【专利技术属性】
技术研发人员:王巍夏旭赵汝法丁辉刘斌政稅绍林
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

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

1