论文部分内容阅读
卷积神经网络(Convolutional Neural Network,CNN)是一种典型的多层神经网络,它是首个真正意义上成功训练多个层次网络的结构模型,其权值共享的网络结构使之在图像处理、语音识别等有着重要的应用价值。CNN算法通常是在CPU或GPU上以软件编程的方式进行实现,这种实现方法简单却无法发挥CNN并行性的特点,训练速度慢。FPGA含有丰富的计算资源,基于SRAM结构的FPGA能够在FPGA运行过程中对片上的资源进行重新配置,实现系统逻辑功能的切换,提高系统的灵活性和资源利用率。本文提出了以FPGA的动态可重构技术实现CNN的方法。本文首先介绍了基于FPGA的动态可重构技术的重构方法、配置技术和实现流程,并根据CNN算法的特点制定了合适的重构配置方案。对CNN的计算模型、网络结构和激活函数进行了简单地介绍和分析,并对FPGA实现CNN可能出现的问题进行了简要分析,并提出了对应的解决方案;接下来分析了CNN的可重构性和并行性,将CNN的训练流程分为了四个不同的阶段,包括初始化阶段、前向传播阶段、反向传播阶段和权值更新阶段。论文设计了一种网络结构较为简单、权值数量较少的卷积神经网络算法,称为My Net算法,并以My Net算法的前向传播模块为基础实现基于FPGA的动态可重构系统。将My Net算法的前向传播阶段分为了3种不同的子模块:卷积子模块、子采样子模块和全连接子模块。以卷积子模块和子采样子模块为主,对卷积运算和子采样运算进行了详细地分析,提出了具体的实现方法;提出了一种时序控制策略,保证了模块之间的顺序执行;以Verilog HDL为基础实现了系统的各个模块。在CPU上对My Net算法进行实现和测试,并与Lenet-5算法的性能相对比,证实了其不错的训练速度和较好的性能;对系统的各个模块分别进行测试,验证了模块的功能;以任意多个模块为例,测试了系统的时序控制策略;最后对整个系统进行了测试,验证了系统的正确性。