深度学习中的卷积神经网络系统设计及硬件实现深度学习中的卷积神经网络系统设计及硬件实现
针对目前深度学习中的卷积神经网络(CNN)在CPU平台下训练速度慢、耗时长的问题,采用现场可编程门阵
列(FPGA)硬件平台设计并实现了一种深度卷积神经网络系统。该系统采用修正线性单元(ReLU)作为特征
输出的激活函数并使用Softmax函数作为输出分类器。利用流水线技术并针对每一层的特征运算进行了并行处
理,从而能够在1个系统时钟周期内完成整个CNN中的295次卷积运算。系统最后采用MNIST数据集作为实验样
本,实验结果表明,在50 MHz的工作频率下,FPGA的训练用时相较于通用CPU的训练用时提升了8.7倍,经过
2 000次迭代后系统识别的准确率为92.42%。
0 引言引言
随着深度学习的广泛应用与发展
[1-2]
,卷积神经网络(Convolutional Neural Network,CNN)被使用的场景越来越多,特别是
在图像识别场景中获得了突破性的发展。CNN拥有多层的神经网络结构,其自身拥有较强的容错、学习和并行处理能力
[3]
,
是一种拥有多层感知器,局部连接和权值共享的网络结构
[4]
,从而降低了网络模型的复杂性和网络连接权值的个数,因此近几
年来CNN在视频分析
[5-6]
、人脸识别
[7-8]
等领域得到了广泛的应用。
虽然CNN的应用广泛,但其模型参数的训练往往需要大量的用时,特别是当数据量很大的时候。在现阶段实现深度卷积神
经网络主要是使用消费级的通用处理器CPU来实现的
[9]
,但是在CNN的模型结构中,其每一层内的卷积运算都只与当前层的
特征运算核相关,与其他层是独立且不相关的,所以CNN是一种典型的并行运算结构。而现场可编程门阵列(Field-
Programmable Gate Array,FPGA)作为一种高度密集型计算加速器件,可通过硬件描述语言完成算法实现,从而利用FPGA
的硬件结构特性实现并行运算的加速。
本文首先对深度学习中的CNN进行了介绍,然后设计一种基于FPGA的CNN系统,通过流水线和并行处理减少了训练参数
所需用时,提升了系统的计算性能。为了验证设计的功能性,最后采用MINST数据集作为系统验证。
1 CNN
1.1 CNN模型模型
CNN是基于神经认知机模型(Neocognitron Model)的一种深度神经网络结构,是当前应用最为广泛的模型结构。CNN在
确定模型参数时首先利用前向传播来获取和输出目标的误差,然后再通过高效的反向传播训练算法来实现参数的确定。一般经
典的CNN模型是由输入层、卷积层、池化层、全连接层和分类层组合而构成的,在CNN中卷积层和不同的卷积核进行局部连
接,从而产生输入数据的多个特征输出,将输出经过池化层降维后通过全连接层和分类层获取与输出目标的误差,再利用反向
传播算法反复地更新CNN中相邻层神经元之间的连接权值,缩小与输出目标的误差,最终完成整个模型参数的训练。图1是一
种典型的CNN网络结构,数据使用不同权重的卷积核Kernel经过卷积运算,将运算的结果经过激活函数ReLU后加上偏置Bias
得到多个特征输出,然后经过池化进行层降维处理后再与全连接层进行全连接,最后经过分类器Softmax函数进行输出分类。
得到分类结果后,经过与输出目标进行比较得出误差,最后使用反向传播算法得出每一层的残差,利用残差计算出新的权
值并更新原有的权值。以上整个过程可由式(1)和式(2)表示:
1.2 本文本文CNN模型模型
评论0