CN109902802B - 基于fpga的卷积神经网络训练系统及方法 - Google Patents
基于fpga的卷积神经网络训练系统及方法 Download PDFInfo
- Publication number
- CN109902802B CN109902802B CN201910060523.8A CN201910060523A CN109902802B CN 109902802 B CN109902802 B CN 109902802B CN 201910060523 A CN201910060523 A CN 201910060523A CN 109902802 B CN109902802 B CN 109902802B
- Authority
- CN
- China
- Prior art keywords
- module
- network
- parameter
- data
- convolutional neural
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明涉及一种基于FPGA的卷积神经网络训练系统及方法,系统包括:核心处理模块,用于提供第一训练集数据并初始化卷积神经网络的第一网络参数,以及接收第二网络参数误差;输入数据转换模块,用于分别对第一训练集数据和第一网络参数进行处理得到第二训练集数据和第二网络参数;前向计算引擎模块,用于对第二训练集数据和第二网络参数进行处理得到隐层数据和预测误差;反向计算引擎模块,用于对隐层数据、第二网络参数和预测误差进行处理得到第一网络参数误差;输出数据转换模块,用于对第一网络参数误差进行处理得到第二网络参数误差。该系统不仅实现了前向传播计算和反向传播计算的同时运行,还减少对公共数据总线的占用以及存储带宽的需求。
Description
技术领域
本发明属于神经网络计算领域,具体涉及一种基于FPGA的卷积神经网络训练系统及方法。
背景技术
深度学习(Deep Learning,DL)作为机器学习中一个新兴、热门的研究领域,随着高性能计算、云计算等技术的出现在近几年取得了巨大的发展。深度学习允许由多个处理层组成的计算模型来学习具有多级抽象的数据的表示。这些方法已经极大地改进了语音识别,视觉对象识别,对象检测和许多其他领域如药物发现和基因组学的现有技术。卷积神经网络(Convolutional Neural Network,CNN)作为一种具有多层隐层结构的深度学习模型,以其局部权值共享和稀疏连接的特殊结构,在布局上更靠近于实际的生物神经网络,在机器视觉、机器翻译等诸多领域的应用取得了巨大的成功,将人工智能推向了一个新高度。多层卷积神经网络表现出的特征提取与分类的能力由推断过程实现,但能力的形成需要大量有监督训练,训练过程的计算量比推断过程更加庞大。然而为了解决更抽象,更复杂的问题,卷积神经网络的规模越来越大,层数越来越多,传统通用计算机平台的串行操作模式已经很难满足需求,如何高性能低功耗的加速卷积神经网络的推断与训练,成为科研工作者和商业机构的研究重点。
具有大量逻辑、运算单元的现场可编程逻辑门阵列(Field Programmable GateArray,FPGA)在性能、并行运算、功耗和尺寸等诸多方面具有突出的优势,采用16nm制程的高端FPGA的性能已经接近高级的定制芯片(Application Specific Integrated Circuit,ASIC)。与图形处理器(Graphics Processing,GPU)和ASIC相比,FPGA还具有灵活的可配置性。卷积神经网络作为一种高度并行的网络结构,很适合采用基于FPGA的平台进行实现,越来越多的研究者开始采用FPGA加速卷积神经网络的计算,充分的挖掘其并行性。
目前,基于FPGA的研究大多集中在加速卷积神经网络的推断过程,基于FPGA架构实现的卷积神经网络已经能够达到数百吉的每秒操作量(Giga Operations per Second,GOPS)。然而采用FPGA加速卷积神经网络的训练过程仍是一项具有挑战性的工作。与推断过程相比,卷积神经网络训练过程的处理流程更加复杂,计算量更加庞大,同时涉及大量数据的传输以及隐层数据的缓存。
在FPGA加速卷积神经网络训练的研究中,研究者的成果已经取得一定的加速效果。但是对于加速训练过程,他们所提出的计算架构和设计方法都相仿于加速推断过程,并没有太多去考虑训练过程的特点,分析推断过程与训练过程的异同。如何结合卷积神经网络训练的特点,更合理高效地利用FPGA的资源,更充分的开发FPAG的加速性能仍是有待解决的问题。
发明内容
为了解决现有技术中存在的上述问题,本发明提供了一种基于FPGA的卷积神经网络训练系统及方法,本发明要解决的技术问题通过以下技术方案实现:
本发明实施例提供了一种基于FPGA的卷积神经网络训练系统,包括:
核心处理模块,用于提供第一训练集数据并初始化卷积神经网络的第一网络参数,以及接收第二网络参数误差;
输入数据转换模块,用于分别对所述第一训练集数据和所述第一网络参数进行处理得到第二训练集数据和第二网络参数;
前向计算引擎模块,用于对所述第二训练集数据和所述第二网络参数进行处理得到隐层数据和预测误差;
反向计算引擎模块,用于对所述隐层数据、所述第二网络参数和所述预测误差进行处理得到所述第一网络参数误差;
输出数据转换模块,用于对所述第一网络参数误差进行处理得到所述第二网络参数误差。
在本发明的一个实施例中,还包括内存模块,所述内存模块与所述核心处理模块连接,用于存储所述第一训练集数据和所述第一网络参数。
在本发明的一个实施例中,所述前向计算引擎模块包括与多个所述卷积神经网络相对应的前向子模块,所述前向子模块包括:第一参数控制器、第一传播控制器、前向输入缓存模块、第一参数缓存模块以及第一计算模块;
所述第一参数控制器分别与所述输入数据转换模块、反向计算引擎模块连接;所述第一传播控制器与所述输入数据转换模块连接;所述第一计算模块与所述反向计算引擎模块连接;
所述第一参数控制器分别与所述第一参数缓存模块、所述第一计算模块连接;
所述第一传播控制器分别与所述前向输入缓存模块、所述第一计算模块连接;
所述第一参数缓存模块与所述第一计算模块连接。
在本发明的一个实施例中,所述反向计算引擎模块包括多个与所述前向子模块相对应的反向子模块,所述反向子模块包括:第二参数控制器、第二传播控制器、反向输入缓存模块、前向数据缓存模块、第二参数缓存模块和第二计算模块;
所述第二参数控制器分别与所述前向计算引擎模块、所述输出数据转换模块连接;所述第二传播控制器分别与所述前向计算引擎模块连接;所述第二计算模块与所述输出数据转换模块连接;
所述第二传播控制器分别与所述前向数据缓存模块、所述反向输入缓存模块连接;
所述第二参数缓存模块分别与所述第二参数控制器和所述第二计算模块连接;
所述前向数据缓存模块与所述第二计算模块连接;
所述反向输入缓存模块与所述第二计算模块连接。
在本发明的一个实施例中,还包括隐层数据队列模块,所述隐层数据队列模块分别与所述前向计算引擎模块和所述反向计算引擎模块连接,用于缓存所述隐层数据并发送给所述反向子模块。
在本发明的一个实施例中,所述隐层数据队列模块包括多个缓存队列,一个所述缓存队列分别与一个所述前向子模块、一个所述反向子模块连接。
在本发明的一个实施例中,通过传播总线对所述第一训练集数据和所述第二训练集数据进行发送和接收。
在本发明的一个实施例中,通过参数总线对所述第一网络参数和所述第二网络参数进行发送和接收。
本发明的另一个实施例提供了一种基于FPGA的卷积神经网络训练方法,包括以下步骤:
获取第一网络参数、第一训练集数据以及学习率;
对所述第一网络参数和所述第一训练集数据进行处理,得到第二网络参数和第二训练集数据;
根据所述第二网络参数和所述第二训练集数据计算得到第一网络参数误差;
根据所述第一网络参数误差得到第二网络参数误差;
根据所述学习率和所述第二网络参数误差对所述第一网络参数进行更新,直到所述卷积神经网络的分类能力达到预设精度。
在本发明的一个实施例中,根据所述第二网络参数和所述第二训练集数据计算得到第一网络误差参数,包括:
根据所述第二网络参数和所述第二训练集数据计算得到隐层数据和预测误差;
根据所述第二网络参数、所述隐层数据和所述预测误差计算得到第一网络参数误差。
与现有技术相比,本发明的有益效果:
1.本发明提供的方法在FPGA中分别使用前向计算引擎和反向计算引擎实现训练过程的前向传播计算和反向传播计算,在前向计算引擎和反向计算引擎之间设计隐层数据队列,让隐层数据直接传输到所需的反向子模块,不仅实现了前向传播计算和反向传播计算的同时运行,还减少对公共数据总线的占用以及存储带宽的需求。
2.针对训练过程前向传播和反向传播不同的特性,分别设计了前向计算引擎和反向计算引擎的子模块,同时各个模块又具有通用性,能够对应卷积神经网络中各种网络层的计算,同时可以使用这些模块灵活的搭建实际被训练网络的训练模型。
附图说明
图1为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的结构示意图;
图2为本发明实施例提供的另一种基于FPGA的卷积神经网络训练系统的结构示意图;
图3为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的前向计算引擎模块的结构示意图;
图4为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的前向子模块的结构示意图;
图5为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的反向计算引擎模块的结构示意图;
图6为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的反向子模块的结构示意图;
图7为本发明实施例提供的一种基于FPGA的卷积神经网络训练方法的流程示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
实施例一
请同时参见图1和图2,图1为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的结构示意图;图2为本发明实施例提供的另一种基于FPGA的卷积神经网络训练系统的结构示意图;一种基于FPGA的卷积神经网络训练系统,包括:核心处理模块100、输入数据转换模块200、前向计算引擎模块300、反向计算引擎模块400以及输出数据转换模块500。
核心处理模块100分别与输入数据转换模块200和输出数据转换模块500连接,用于提供第一训练集数据并初始化卷积神经网络的第一网络参数,同时将第一训练集数据和第一网络参数发送给输入数据转换模块200并接收输出数据转换模块500发送的第二网络参数误差。
此外,核心处理模块100还要根据学习率更新卷积神经网络的第一网络参数。
在一个具体实施例中,该卷积神经网络训练系统还包括内存模块600,该内存模块600连接核心处理模块100,用于存储卷积神经网络发送的第一训练集数据和第一网络参数,即该内存模块600负责为核心处理模块100提供高速的动态内存。
由于需要存储的第一训练集数据和第一网络参数的内存可能会过大,影响核心处理模块100的运行,因此,该卷积神经网络训练系统可以设置一个内存模块600用于存储第一训练集数据和第一网络参数。
需要说明的是,第一网络参数为初始状且核心处理模块100能够进行处理的网络参数,第一训练集数据为核心处理模块100能够处理的训练集数据。
进一步地,输入数据转换模块200与前向计算引擎模块300连接,用于分别将核心处理模块100发送的第一训练集数据和第一网络参数转换成带有特定帧头信息的数据流,即转换成第二训练集数据和第二网络参数,然后通过传播总线将第二训练集数据发送至前向计算引擎模块300,通过参数总线将第二网络参数发送至前向计算引擎模块300。
进一步地,前向计算引擎模块300分别与输入数据转换模块200、反向计算引擎模块400连接,用于对第二训练集数据和第二网络参数进行处理得到隐层数据和预测误差,即实现卷积神经网络训练的前向传播计算;通过前向传播计算不断调整了网络参数,同时调整后的网络参数和训练数据集前向传播可以实现图片的精确分类,例如初始化的网络参数实现的图片分类准确率只有20%,通过调整后的网络参数识别率可以达到90%。首先通过参数总线装在卷积神经网络的第二网络参数,然后通过传播总线接收第二训练集数据,再使用第二训练集数据和第二网络参数进行前向传播计算,得到隐层数据和预测误差,通过缓存总线将隐层数据发送给反向计算引擎模块400,通过传播总线将预测误差发送给反向计算引擎模块400,通过参数总线将第二网络参数发送给反向计算引擎模块400。
请同时参见图3和图4,图3为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的前向计算引擎模块的结构示意图,图4为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的前向子模块的结构示意图。该前向计算引擎模块300由多个与被训练的卷积神经网络结构相对应的前向子模块级联组成。该前向子模块具体包括:第一参数控制器304、第一传播控制器301、前向输入缓存模块302、第一参数缓存模块303和第一计算模块305,第一参数控制器304分别与输入数据转换模块200、反向计算引擎模块400连接;第一传播控制器301与输入数据转换模块200连接;第一计算模块305与反向计算引擎模块400连接;第一参数控制器304分别与第一参数缓存模块303、第一计算模块305连接;第一传播控制器301分别与前向输入缓存模块302、第一计算模块305连接;第一参数缓存模块303与第一计算模块305连接。这些具体结构实现了卷积神经网络训练中各网络层的前向传播计算;其中,第一参数控制器304与前向子模块的参数总线相连接,对该参数总线输入的第二网络参数的数据帧进行帧头信息的解析,将帧头信息与预设信息相对应的第二网络参数发送至第一参数缓存模块303,将不能对应的参数数据通过参数总线进行输出。由于卷积神经网络分为很多层,每一层的参数不一样,每一层的前向计算引擎模块300中的第一参数控制器304通过解析帧头信息来判断是否是本层的参数,如果是本层的参数则缓存至本层,如果不是本层的参数则直接输出至下一层,下一层的参数控制器再进行帧头信息的判断。
进一步地,第一传播控制器301与前向子模块的传播总线和缓存总线连接,对传播总线输入的数据帧进行帧头信息的解析,将帧头信息与预设信息相对应的第二训练集数据发送至前向输入缓存模块302;第一计算模块305利用缓存的第二训练集数据和第二网络参数进行并行计算,该第一计算模块305包括特征提取模块和特征分类模块,特征提取模块用于实现卷积层、池化层的前向传播计算,即实现卷积、池化和激活函数的计算;特征分类模块用于实现全连接层的前向传播计算,即实现矩阵乘法和激活函数的计算。
需要说明的是,卷积神经网络主要由卷积层、池化层和全连接层构成。
需要说明的是,卷积层、池化层以及全连接层都有激活函数,它们的激活函数相同,激活函数的反向传播也相同。
进一步地,该反向计算引擎模块400分别与前向计算引擎模块300和输出数据转换模块500连接,用于对隐层数据、第二网络参数和预测误差进行处理得到第一网络参数误差,即实现卷积神经网络训练的反向传播计算;首先通过参数总线装载卷积神经网络的第二网络参数,然后通过传播总线接收前向计算引擎模块300输出的预测误差,并通过缓存总线获取前向传播计算中得到的隐层数据,使用预测误差、隐层数据以及网络参数进行反向传播计算,计算出第一网络参数误差,并通过参数总线将第一网络参数误差发送至输出数据转换模块500。
进一步地,请同时参见图5和图6,图5为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的反向计算引擎模块的结构示意图,图6为本发明实施例提供的一种基于FPGA的卷积神经网络训练系统的反向子模块的结构示意图。反向计算引擎模块400由多个与前向计算引擎模块300中的前向子模块呈对应关系的反向子模块组成,反向子模块具体包括:第二参数控制器405、第二传播控制器401、反向输入缓存模块403、前向数据缓存模块402、第二参数缓存模块404和第二计算模块406,第二参数控制器405分别与前向计算引擎模块300、输出数据转换模块500连接;第二传播控制器401分别与前向计算引擎模块300连接;第二计算模块406与输出数据转换模块500连接;第二传播控制器401分别与前向数据缓存模块402、反向输入缓存模块403连接;第二参数缓存模块404分别与第二参数控制器405和第二计算模块406连接;前向数据缓存模块402与第二计算模块连接406;反向输入缓存模块403与第二计算模块406连接。这些具体构成分别实现卷积反向模块和全连接反向模块的功能,即实现卷积神经网络训练中各网络层的反向传播计算和第一网络参数误差的计算;其中,第二参数控制器405与反向子模块的参数总线连接,用于将帧头信息与预设信息相对应的参数数据发送至第二参数缓存模块404,将不能对应的参数数据通过参数总线进行输出,同时也将反向子模块中第二计算模块406计算出的第一网络参数误差通过参数总线进行输出;第二传播控制器401与反相子模块的传播总线和缓存总线连接,用于对传播总线输入的数据帧进行帧头信息的解析,将帧头信息与预设信息相对应的预测误差数据发送至反相输入缓存模块,同时将反向传播计算所需要的隐层数据通过缓存总线发送至前向数据缓存模块402;第二计算模块406利用缓存的预测误差数据、隐层数据和第二网络参数进行并行计算,该第二计算模块406包括卷积反向模块和全连接反向模块;卷积反向模块用于实现卷积层和池化层的反向计算传播,即实现卷积、池化、以及激活函数反向传播的计算,同时实现卷积层、池化层的第三网络参数误差的计算;全连接反向模块用于实现全连接层的反向传播计算,即实现矩阵乘法和激活函数反向传播的计算,同时实现全连接层的第四网络参数误差的计算。并将计算生成的预测误差和第一网络参数误差分别发送至传播总线和第二参数控制器405。
需要说明的是,第一网络参数误差包括第三网络参数误差和第四网络参数误差。
进一步地,该卷积神经网络训练系统还包括隐层数据队列模块700,该隐层数据队列模块700分别与前向计算引擎模块300和反向计算引擎模块400连接,用于缓存隐层数据并发送给反向子模块。前向计算引擎模块300中的传播控制器通过前向计算引擎模块300中的缓冲总线将前向传播计算中生成的隐层数据发送给隐层数据队列模块700,再利用隐层数据队列模块700将该隐层数据发送给反向计算引擎模块400。
进一步地,隐层数据队列由多个先进先出的缓存队列构成,通过缓存总线连接前向计算引擎模块300中的前向子模块和反向计算引擎中的反向子模块,每一个前向子模块和每一个反向子模块都同时使用一个缓存队列,实现了前向计算引擎模块300和反向计算引擎模块400的同时运算。
进一步地,输出数据转换模块500通过参数总线接收反向计算引擎模块400发送的第一网络参数误差,将带特定帧头信息的数据转化成核心处理模块100能够处理的第二网络参数误差,然后发送至核心处理模块100。
需要说明的是,本发明实施例中出现的“第一”、“第二”、“第三”、“第四”仅仅是为了区分不同的参数,并没有特殊的含义。
清参见图7,图7为本发明实施例提供的一种基于FPGA的卷积神经网络训练方法的流程示意图。本发明的另一个实施例提供了一种基于FPGA的卷积神经网络训练方法,具体包括以下步骤:
步骤(a):获取第一网络参数、第一训练集数据以及学习率;
第一网络参数即卷积神经网络的原始参数,第一训练集数据即卷积神经网络训练系统所使用的训练集数据,且该卷积神经网络训练系统中的核心处理模块100利用学习率对该卷积神经网络的第一网络参数不断进行更新。
步骤(b):对第一网络参数和第一训练集数据进行处理,得到第二网络参数和第二训练集数据。
由于该训练系统的前向计算引擎模块300、反向计算引擎模块400以及输出数据转换模块500所能接收的数据形式有差异,因此,需要将其转变成其他的数据形式进行计算以及传送,即输入数据转换模块200将第一网络参数和第一训练集数据转换成数据帧的形式进行传送。
步骤(c):根据第二网络参数和第二训练集数据计算得到第一网络参数误差。
步骤(d):根据第一网络参数误差得到第二网络参数误差。
由于核心处理模块100能接收的数据形式的限制,需要将第一网络参数误差转换成第二网络参数误差,以使核心处理模块100能进行处理。
步骤(e):根据学习率和第二网络参数误差对第一网络参数进行更新,直到卷积神经网络的分类能力达到预设精度。
核心处理模块100根据学习率和第二网络参数误差对第一网络参数误差进行更新,并将更新后的网络参数进行新的一轮迭代,直到更新后的网络参数能让卷积神经网络的分类能力达到预设精度,或者是直到第一训练集数据都使用完毕。
需要说明的是,预设精度指的是卷积神经网络可以接受的精度,即预计卷积神经网络可以达到多大的精度就停止训练,例如,设置预设精度为90%,即100张图片中,卷积神经网络进行图片分类识别正确了90张,达到了预期的设定值,此时,可以终止训练。
进一步地,步骤(c)还可以包括一下步骤:
步骤(c1):根据第二网络参数和第二训练集数据计算得到隐层数据和预测误差。
前向计算引擎模块300接收到第二网络参数和第二训练集数据后,进行前向传播计算,得到预测误差和隐层数据。
步骤(c2):根据第二网络参数、隐层数据和预测误差计算得到第一网络参数误差。
反向计算引擎模块400接收到预测误差、隐层数据以及第二网络参数后,进行反向传播计算,得到第一网络误差。
与现有的训练系统相比,本发明在FPGA中分别使用前向计算引擎和反向计算引擎实现训练过程的前向传播计算和反向传播计算,同时在前向计算引擎和反向计算引擎中设计隐层数据队列,让隐层数据直接传输到所需的反向子模块,不仅实现了前向传播计算和反向传播计算的同时运行,还减少了对公共数据总线的占用以及存储带宽的需求。
此外,针对训练过程前向传播和反向传播不同的特性,分别设计了前向计算引擎和反向计算引擎的子模块,同时各个模块又具有通用性,能够对应卷积神经网络中各层网络层的计算,因此,可以使用这些模块灵活的搭建实际被训练网络的网络模型。
实施例二
本发明实施例在实施例一的基础上,以训练实际的卷积神经网络LeNet-5为例,对本发明的卷积神经网络系统进行详细的说明。
LeNet-5是Yann LeCun在1998的论文中提出,用于实现手写数字识别,是早期卷积神经网络中最有代表性的模型,LeNet-5共有8层结构,除去输入层,共有7个网络层,各网络层的类型与参数如下表所示:
表1 LeNet-5卷积神经网络的各网络层的类型与参数
LeNet-5中主要有卷积层、池化层、全连接层3种网络层,而激活函数作为一对一的连接,可以放置在上述三种网络层之后。LeNet-5的激活函数采用ReLU函数,放置在卷积层和全连接后面,但为了方便硬件实现,将卷积层后面的非线性层搬移到池化层之后。
本发明的一个实施例对LeNet-5的各网络层进行详细介绍。
第一层是卷积层,连接至每个网络的输入,形成6个输出特征图,卷积核的大小为5×5;卷积窗口每次滑动一个像素,该卷积层经过卷积之后输出的特征图的大小是28×28;每个卷积核有5×5个权值参数,再加上1个偏置,总共有26个参数,所以第一层需要训练的参数数量为26×6=156个,即第一网络参数的数量为156个。
第二层是池化层,没有第一网络参数,池化层由6个28×28的特征图分别进行以2×2为单位的最大值池化得到6个14×14的特征图。
第三层是卷积层,卷积层和第一层相同,不同的是第三层的每个节点与第二层的多个图相连,第三层有16个10×10的输出图,每个输出图都是由6个输入图与对应卷积核卷积求和而得到的,这种组合连接的方式有利于提取图像中的多种组合特征;第三层需要训练的参数数量为26×6×16=2496个,即第一网络参数的数量为2496个。
第四层是池化层,连接方式与第二层类似,同样采用2×2为单位的最大值池化,由16个10×10的特征图得到16个5×5的特征图。
第五层是全连接层,亦可等效为一个卷积层。这是由于第四层的16个特征图的大小为5×5,若采用5×5卷积核,卷积后将得到120个大小为1×1的特征图;每个都与上一层的16个图相连;该层的输入向量维度为400,输出向量维度为120;第五层共有(5×5×16+1)×120=48120个第一网络参数。
第六层全连接层,该网络层共有84个节点,该层的第一网络参数和连接数是(120+1)×84=10164。
第七层是输出层,也是全连接层,共有10个节点,代表10个分类结果,采用softmax函数进行概率计算。一般来说,训练网络时,会将标签与节点序号相对应,即如果节点i的值为最大,则网络识别的结果是数字i。
本发明实施例具体以Zynq-7000系列的FPGA芯片进行说明,Zynq-7000系列的FPGA芯片由PS(Processing system,处理系统)和PL(Programmable logic,可编程序逻辑)两部分组成,PS中固化了双A9核心的ARM处理器,处理器的最大主频为1000MHz,具有64KB的一级缓存和512KB的二级缓存,同时可以外挂高速的DDR3动态内存,支持多种数据接口,如三模式千兆以太网。Zynq芯片的PL为传统FPGA的逻辑资源组合,采用Xilinx的Kintex-7系列架构,拥有350K以上的逻辑单元、2180K的BRAM和900个DSP功能切片。
本发明实施例中的卷积神经网络包括核心处理模块100、内存模块600、输入数据转换模块200、前向计算引擎模块300、反向计算引擎模块400、隐层数据队列模块700和输出数据转换模块500;核心处理模块100分别与内存模块600、输入数据转换模块200和输出数据转换模块500相连;前向计算引擎模块300分别与输入数据转换模块200、隐层数据队列模块700以及反相计算引擎模块相连;反向计算引擎模块400分别与输出数据转换模块500、隐层数据队列模块700以及前向计算引擎模块300相连。
进一步地,核心处理模块100使用Zynq-7000系列FPGA芯片中的PS,搭载嵌入式Linux系统,用于初始化卷积神经网络的第一网络参数并将第一网络参数和第一训练集数据存储在内存模块600中,再将内存模块600中的第一训练集数据和第一网络参数发送至输入数据转换模块200,同时接收来自输出数据转换模块500的第一网络参数误差,然后根据学习率更新卷积神经网络的网络参数。
进一步地,该内存模块600采用1GB的DDR3动态缓存,与Zynq-7000系列FPGA芯片的PS直接相连,负责为核心处理模块100提供高速的动态内存,用于存储卷积神经网络的第一网络参数和第一训练集数据,同时也保证Linux系统的正常运行。
进一步地,该输入数据转换模块200采用Xilinx公司的DMA IP核实现,与核心处理模块100之间采用AXI4_Full总线进行通信,与前向计算引擎模块300之间采用AXI4_Stream流数据总线进行通信,可以通过PS进行DMA的参数和流量控制,将核心处理模块100发送的第一训练集数据和第一网络参数转换成带特定帧头信息的数据流,即转换成第二训练集数据和第二网络参数,然后通过传播总线将第二训练集数据发送至前向计算引擎模块300,通过参数总线将第二网络参数发送至前向计算引擎模块300。
进一步地,该前向计算引擎模块300用于实现卷积神经网络训练的前向传播计算,首先通过参数总线装在卷积神经网络的第二网络参数,再通过传播总线接收第二训练集数据,利用第二网络参数和第二训练集数据进行前向传播计算,并通过缓存总线将前向传播计算中生成的隐层数据发送给隐层数据队列模块700,通过传播总线将前向传播计算中生成的预测误差发送给反向计算引擎模块400,通过参数总线将第二网络参数发送给反向计算引擎模块400。
进一步地,前向计算引擎模块300由多个与被训练的卷积神经网络结构相对应的前向子模块级联组成,前向子模块具体包括:第一参数控制器304、第一传播控制器301、前向输入缓存模块302、第一参数缓存模块303和第一计算模块305,这些具体结构实现了卷积神经网络训练中各网络层的前向传播计算;其中,第一参数控制器304与前向子模块的参数总线相连接,对该参数总线输入的第二网络参数的数据帧进行帧头信息的解析,将帧头信息与预设信息相对应的第二网络参数发送至第一参数缓存模块303,将不能对应的参数数据通过参数总线进行输出;第一传播控制器301与前向子模块的传播总线和缓存总线连接,对传播总线输入的数据帧进行帧头信息的解析,将帧头信息与预设信息相对应的第二训练集数据发送至前向输入缓存模块302;第一计算模块305利用缓存的第二训练集数据和第二网络参数进行并行计算,该第一计算模块305包括特征提取模块和特征分类模块,特征提取模块用于实现卷积层、池化层的前向传播计算,即实现卷积、池化和激活函数的计算;特征分类模块用于实现全连接层的前向传播计算,即实现矩阵乘法和激活函数的计算。
进一步地,从图2可以看出,前向计算引擎模块300中的前向子模块是与实际卷积神经网络结构相对应的,LeNet-5卷积神经网络的第一卷积层和第二池化层为第一个特征提取阶段,由一个特征提取模块硬件实现,标记为FM1;第三卷积层和第四池化层为第二个特征提取阶段,同样由特征提取模块实现,标记为FM2;第五全连接层,采用特征分类模块实现,标记为FM3;第六全连接层使用特征分类模块实现,标记为FM4;第七输出层同样采用特征分类模块硬件实现,标记为FM5。
进一步地,该隐层数据队列模块700由多个独立的先进先出缓存队列构成,用于缓存前向计算引擎模块300中产生的隐层数据,并提供给反向计算引擎模块400来实现卷积神经网络训练的反向传播计算。
进一步地,隐层数据队列模块700通过缓存总线连接前向计算引擎模块300中的前向子模块和反向计算引擎模块400中的反向子模块,每一对模块之间都使用一个缓存队列,实现前向计算引擎模块300和反向计算引擎模块400的同时运算;由于前向传播计算和反向传播计算的方向的相逆的,所以设计的先进先出缓存队列的缓存容量将呈现三角形分布,第一层网络层所对应的前向子模块和反向子模块中间的隐层数据缓存量最大,最后一层网络层对应的隐层数据换存量最小。
进一步地,该反向计算引擎模块400用于实现卷积神经网络的反向传播计算,首先通过参数总线装在卷积神经网络的第二网络参数,再通过传播总线接收前向计算引擎模块300输出的预测误差,通过缓存总线从隐层数据队列模块700中获取前向传播计算中的隐层数据,然后使用预测误差、隐层数据以及第二网络参数进行反向传播计算,同时计算出第一网络参数误差,通过参数总线将第一网络参数误差发送至输出数据装换模块。
进一步地,反向计算引擎模块400同样由多个与前向子模块呈对应关系的反向子模块组成,反向子模块具体包括:第二参数控制器405、第二传播控制器401、反向输入缓存模块403、前向数据缓存模块402、第二参数缓存模块404和第二计算模块406,这些具体构成分别实现卷积反向模块和全连接反向模块的功能,即实现卷积神经网络训练中各网络层的反向传播计算和第一网络参数误差的计算;其中,第二参数控制器405与反向子模块的参数总线连接,用于将帧头信息与预设信息相对应的参数数据发送至第二参数缓存模块404,将不能对应的参数数据通过参数总线进行输出,同时也将反向子模块中第二计算模块406计算出的第一网络参数误差通过参数总线进行输出;第二传播控制器401与反相子模块的传播总线和缓存总线连接,用于对传播总线输入的数据帧进行帧头信息的解析,将帧头信息与预设信息相对应的预测误差数据发送至反相输入缓存模块,同时将反向传播计算所需要的隐层数据通过缓存总线发送至前向数据缓存模块402;第二计算模块406利用缓存的预测误差数据、隐层数据和第二网络参数进行并行计算,该第二计算模块406包括卷积反向模块和全连接反向模块;卷积反向模块用于实现卷积层和池化层的反向计算传播,即实现卷积、池化、以及激活函数反向传播的计算,同时实现卷积层、池化层的第三网络参数误差的计算;全连接反向模块用于实现全连接层的反向传播计算,即实现矩阵乘法和激活函数反向传播的计算,同时实现全连接层的第四网络参数误差的计算。并将计算生成的预测误差和第一网络参数误差分别发送至传播总线和第二参数控制器405。
进一步地,图3可以看出,反向计算引擎模块400中的反向子模块与其前向计算引擎模块300的前向子模块是呈对应关系的,卷积反向模块与特征提取模块对应,全连接反向模块与特征分类模块对应,使用标记BM与前向引擎模块中的标记FM相对应。
需要说明的是,隐层数据队列模块700、前向计算引擎模块300和反向计算引擎模块400中的提到的传播总线、参数总线以及缓存总线均是采用AXI4_Stream流数据总线,总线中的数据均是以数据帧的形式进行传播,其传输机制相仿于脉动阵列,让整个训练过程的计算都处于流水化状态。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (9)
1.一种基于FPGA的卷积神经网络训练系统,其特征在于,包括:
核心处理模块,用于提供第一训练集数据并初始化卷积神经网络的第一网络参数,以及接收第二网络参数误差;
输入数据转换模块,用于分别对所述第一训练集数据和所述第一网络参数进行处理得到第二训练集数据和第二网络参数;
前向计算引擎模块,用于对所述第二训练集数据和所述第二网络参数进行处理得到隐层数据和预测误差;
反向计算引擎模块,用于对所述隐层数据、所述第二网络参数和所述预测误差进行处理得到所述第一网络参数误差;
输出数据转换模块,用于对所述第一网络参数误差进行处理得到所述第二网络参数误差。
2.根据权利要求1所述的基于FPGA的卷积神经网络训练系统,其特征在于,还包括内存模块,所述内存模块与所述核心处理模块连接,用于存储所述第一训练集数据和所述第一网络参数。
3.根据权利要求1所述的基于FPGA的卷积神经网络训练系统,其特征在于,所述前向计算引擎模块包括与多个所述卷积神经网络相对应的前向子模块,所述前向子模块包括:第一参数控制器、第一传播控制器、前向输入缓存模块、第一参数缓存模块以及第一计算模块;
所述第一参数控制器分别与所述输入数据转换模块、反向计算引擎模块连接;所述第一传播控制器与所述输入数据转换模块连接;所述第一计算模块与所述反向计算引擎模块连接;
所述第一参数控制器分别与所述第一参数缓存模块、所述第一计算模块连接;
所述第一传播控制器分别与所述前向输入缓存模块、所述第一计算模块连接;
所述第一参数缓存模块与所述第一计算模块连接。
4.根据权利要求3所述的基于FPGA的卷积神经网络训练系统,其特征在于,所述反向计算引擎模块包括多个与所述前向子模块相对应的反向子模块,所述反向子模块包括:第二参数控制器、第二传播控制器、反向输入缓存模块、前向数据缓存模块、第二参数缓存模块和第二计算模块;
所述第二参数控制器分别与所述前向计算引擎模块、所述输出数据转换模块连接;所述第二传播控制器分别与所述前向计算引擎模块连接;所述第二计算模块与所述输出数据转换模块连接;
所述第二传播控制器分别与所述前向数据缓存模块、所述反向输入缓存模块连接;
所述第二参数缓存模块分别与所述第二参数控制器和所述第二计算模块连接;
所述前向数据缓存模块与所述第二计算模块连接;
所述反向输入缓存模块与所述第二计算模块连接。
5.根据权利要求4所述的基于FPGA的卷积神经网络训练系统,其特征在于,还包括隐层数据队列模块,所述隐层数据队列模块分别与所述前向计算引擎模块和所述反向计算引擎模块连接,用于缓存所述隐层数据并发送给所述反向子模块。
6.根据权利要求5所述的基于FPGA的卷积神经网络训练系统,其特征在于,所述隐层数据队列模块包括多个缓存队列,一个所述缓存队列分别与一个所述前向子模块、一个所述反向子模块连接。
7.根据权利要求1所述的基于FPGA的卷积神经网络训练系统,其特征在于,通过传播总线对所述第一训练集数据和所述第二训练集数据进行发送和接收。
8.根据权利要求1所述的基于FPGA的卷积神经网络训练系统,其特征在于,通过参数总线对所述第一网络参数和所述第二网络参数进行发送和接收。
9.一种基于FPGA的卷积神经网络训练方法,其特征在于,包括以下步骤:
获取第一网络参数、第一训练集数据以及学习率;
对所述第一网络参数和所述第一训练集数据进行处理,得到第二网络参数和第二训练集数据;
根据所述第二网络参数和所述第二训练集数据计算得到第一网络参数误差;
根据所述第一网络参数误差得到第二网络参数误差;
根据所述学习率和所述第二网络参数误差对所述第一网络参数进行更新,直到所述卷积神经网络的分类能力达到预设精度;
根据所述第二网络参数和所述第二训练集数据计算得到第一网络误差参数,包括:
根据所述第二网络参数和所述第二训练集数据计算得到隐层数据和预测误差;
根据所述第二网络参数、所述隐层数据和所述预测误差计算得到第一网络参数误差。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060523.8A CN109902802B (zh) | 2019-01-22 | 2019-01-22 | 基于fpga的卷积神经网络训练系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910060523.8A CN109902802B (zh) | 2019-01-22 | 2019-01-22 | 基于fpga的卷积神经网络训练系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902802A CN109902802A (zh) | 2019-06-18 |
CN109902802B true CN109902802B (zh) | 2020-12-29 |
Family
ID=66943996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910060523.8A Active CN109902802B (zh) | 2019-01-22 | 2019-01-22 | 基于fpga的卷积神经网络训练系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902802B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111680794A (zh) * | 2020-06-09 | 2020-09-18 | 北京环境特性研究所 | 一种基于fpga的文本生成装置、方法及电子设备 |
CN111896823A (zh) * | 2020-06-30 | 2020-11-06 | 成都四威功率电子科技有限公司 | 一种对功放进行在线健康监测与故障预警的系统 |
CN115861700A (zh) * | 2022-12-13 | 2023-03-28 | 烟台大学 | 一种图像的分类识别方法、装置及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220506A (zh) * | 2017-06-05 | 2017-09-29 | 东华大学 | 基于深度卷积神经网络的乳腺癌风险评估分析系统 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108470190A (zh) * | 2018-03-09 | 2018-08-31 | 北京大学 | 基于fpga定制脉冲神经网络的图像识别方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11138494B2 (en) * | 2017-05-02 | 2021-10-05 | International Business Machines Corporation | Storage controller acceleration for neural network training and inference |
US11775313B2 (en) * | 2017-05-26 | 2023-10-03 | Purdue Research Foundation | Hardware accelerator for convolutional neural networks and method of operation thereof |
-
2019
- 2019-01-22 CN CN201910060523.8A patent/CN109902802B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220506A (zh) * | 2017-06-05 | 2017-09-29 | 东华大学 | 基于深度卷积神经网络的乳腺癌风险评估分析系统 |
CN108280514A (zh) * | 2018-01-05 | 2018-07-13 | 中国科学技术大学 | 基于fpga的稀疏神经网络加速系统和设计方法 |
CN108470190A (zh) * | 2018-03-09 | 2018-08-31 | 北京大学 | 基于fpga定制脉冲神经网络的图像识别方法 |
Non-Patent Citations (2)
Title |
---|
F-CNN An FPGA-based Framework for Training;Wenlai Zhao等;《ASAP2016》;20161231;全文 * |
基于FPGA的卷积神经网络加速器;余子健等;《计算机工程》;20170131;第43卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109902802A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11720523B2 (en) | Performing concurrent operations in a processing element | |
WO2020221200A1 (zh) | 神经网络的构建方法、图像处理方法及装置 | |
CN109902802B (zh) | 基于fpga的卷积神经网络训练系统及方法 | |
US10078620B2 (en) | Runtime reconfigurable dataflow processor with multi-port memory access module | |
WO2022042713A1 (zh) | 一种用于计算设备的深度学习训练方法和装置 | |
WO2018099084A1 (zh) | 一种神经网络模型训练方法、装置、芯片和系统 | |
CN111967468A (zh) | 一种基于fpga的轻量级目标检测神经网络的实现方法 | |
WO2022001805A1 (zh) | 一种神经网络蒸馏方法及装置 | |
CN108764466A (zh) | 基于现场可编程门阵列的卷积神经网络硬件及其加速方法 | |
CN111488983A (zh) | 一种基于fpga的轻量级cnn模型计算加速器 | |
WO2021051987A1 (zh) | 神经网络模型训练的方法和装置 | |
WO2020147142A1 (zh) | 一种深度学习模型的训练方法、系统 | |
WO2022267036A1 (zh) | 神经网络模型训练方法和装置、数据处理方法和装置 | |
CN111079923A (zh) | 适用于边缘计算平台的Spark卷积神经网络系统及其电路 | |
Xiao et al. | FPGA implementation of CNN for handwritten digit recognition | |
Chang et al. | A memory-optimized and energy-efficient CNN acceleration architecture based on FPGA | |
WO2020062299A1 (zh) | 一种神经网络处理器、数据处理方法及相关设备 | |
Al Maashri et al. | A hardware architecture for accelerating neuromorphic vision algorithms | |
Yan et al. | Acceleration and optimization of artificial intelligence CNN image recognition based on FPGA | |
CN112988229B (zh) | 基于异构计算的卷积神经网络资源优化配置方法 | |
WO2023142918A1 (zh) | 一种基于预训练大模型的图像处理方法及相关装置 | |
WO2021036404A1 (zh) | 数据传输方法及相关设备 | |
CN114489496B (zh) | 基于fpga人工智能加速器的数据存储和传输方法 | |
CN114730331A (zh) | 数据处理装置和数据处理方法 | |
CN111832336A (zh) | 一种基于改进的c3d视频行为检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |