全连接神经网络在FPGA上的实现与优化
发布时间:2020-06-19 23:26
【摘要】:随着电子电路领域的飞速发展,计算机的计算能力得到了大幅提升,深度学习神经网络再次迎来了飞速发展的浪潮。全连接神经网络能够处理大规模的数据,提取全部的数据特征,实现大规模数据的分类,因此,仍在图像领域有重要应用。全连接神经网络的训练过程计算复杂,计算量大,领域专家往往使用计算能力出众的GPU设备进行训练;而训练成功的神经网络在处理前向过程时,计算相对简单,因此往往采用FPGA搭载神经网络的前向推断过程。虽然FPGA的计算能力难以赶超同时代的GPU加速设备,但其功耗与GPU相比较低,可以计算全连接神经网络的前向过程。本文提出了一套利用OpenCL在FPGA上高效地实现全连接神经网络的方案,并利用商用的全连接神经网络模型,验证了方案的优化效果,为FPGA上利用OpenCL实现神经网络的设计提供了参考。本文的主要工作和研究成果主要包括:1.全连接神经网络算法的实现与优化。传统的FPGA开发利用较为复杂的硬件描述语言,为FPGA的广泛应用带来了挑战。而OpenCL定义了完整的框架,开发者可以利用OpenCL提供的框架针对FPGA进行编程,缩短了开发周期。本文首先利用OpenCL,在FPGA上实现了全连接神经网络模型的各计算模块,并分别针对两个计算热点提出了算法实现与优化方案:针对全连接层数据规模大、数据复用率较低、对带宽要求高的计算特点,本文利用合并偏移量的方式规整计算任务、通过分组划分的方式发掘并行性、同时利用数据复用提升了数据使用效率,降低了访存压力;针对较为复杂的激活函数(如Sigmoid函数),本文分析了泰勒级数法、查找表法、分段函数逼近法三种常用的激活函数实现方式,并衡量了 FPGA上适宜的方法;针对激活函数的特征,设计了差分查找表的方式实现激活函数,在保证精度的前提下将查找表压缩,节约了系统中的存储空间。2.针对系统特征,提出系统级的优化方案。为最大化地利用FPGA系统内的各种资源,本文针对算法实现后的基准系统,根据硬件特征,分析了资源占用情况和流水线、访存情况,利用数据重排、单指令多数据、多流水线、半精化等策略进行了系统优化,平衡了系统中的资源占用情况、扩大了电路规模、提升了系统性能。优化后的版本与基准版本相比,得到了 2.19x的加速。优化后,系统的主频达到380MHz,RAM占用率达到94%,DSP占用率达到42%。
【学位授予单位】:中国科学技术大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP183;TN791
【图文】:
系列在实数范围之内的激活值。逡逑人工神经网络的雏形是出现于20世纪50年代左右的感知机。感知机实现了逡逑最基本的人工神经网络单元,其结构如图1.1所示。逡逑x2逡逑x3逡逑图1.1感知机的结构逡逑感知机由输入权值、激活函数、输出组成。一个感知机可以接收一组输入,逡逑标记为...},每个输入对应一个权值W;;多个输入根据逡逑对应的权值相加得到的结果经过偏置项b处理,再经激活函数激活(Bias),得逡逑到最终的输出。感知机中的激活函数一般情况下为阶跃函数。如:逡逑F(z)邋=逦Z>UQ逦(2.1)逡逑L0邋other逦v逡逑因此,感知机的数学意义可以表示为:逡逑y邋=邋FiXlZxiWi邋x邋Xi)邋+邋bi)逦(2.2)逡逑1逡逑
深度学习的发展过程中,历史最悠久的深度学习神经网络是全连接神经网络逡逑(即FullyConnectedNetwork)。全连接神经网络每层的“神经元”之间采用全连逡逑接的映射方式与下一层网络中的神经元互联["],其结构如图1.2所示。逡逑┙劐义贤迹保踩由窬珏义显谌由窬缰校ㄒ迤渲械囊桓龈兄魑吧窬薄I喜阃绲拿垮义细錾窬胂虏阃绲拿扛錾窬樱钩闪巳拥耐纾幌虏愕拿扛錾皴义暇萑ㄖ亟邮苌喜阃缰忻扛錾窬莸奶卣髦担糜爰せ钐崛√劐义险鳌>嗖闾卣魈崛。钪湛梢缘玫皆て诘慕峁郏保保荨M贾性残谓诘愦砩窬义狭叽聿煌娜ㄖ怠e义先由窬绯鱿忠潦季捅还惴河τ糜谕枷翊砹煊颍缡中词质侗稹㈠义先肆呈侗鸬龋郏保保荩恢两袢栽诖蠊婺J莸亩喾掷辔侍庵杏τ霉惴海缈拼笱斗晒惧义仙逃玫耐枷袷侗鹣低车取e义希保保炒钤厣窬绲挠布教ㄥ义希保危茫校掌教ㄥ义希茫校帐侵醒氪砥鳎侵髁鞯拇砥骱诵模涸鹜瓿筛髦炙闶呒怂悖义系骷扑慊鞑糠治榷ㄔ诵小K淙凰芄恍骷扑慊诟鞑考ぷ
本文编号:2721490
【学位授予单位】:中国科学技术大学
【学位级别】:硕士
【学位授予年份】:2018
【分类号】:TP183;TN791
【图文】:
系列在实数范围之内的激活值。逡逑人工神经网络的雏形是出现于20世纪50年代左右的感知机。感知机实现了逡逑最基本的人工神经网络单元,其结构如图1.1所示。逡逑x2逡逑x3逡逑图1.1感知机的结构逡逑感知机由输入权值、激活函数、输出组成。一个感知机可以接收一组输入,逡逑标记为...},每个输入对应一个权值W;;多个输入根据逡逑对应的权值相加得到的结果经过偏置项b处理,再经激活函数激活(Bias),得逡逑到最终的输出。感知机中的激活函数一般情况下为阶跃函数。如:逡逑F(z)邋=逦Z>UQ逦(2.1)逡逑L0邋other逦v逡逑因此,感知机的数学意义可以表示为:逡逑y邋=邋FiXlZxiWi邋x邋Xi)邋+邋bi)逦(2.2)逡逑1逡逑
深度学习的发展过程中,历史最悠久的深度学习神经网络是全连接神经网络逡逑(即FullyConnectedNetwork)。全连接神经网络每层的“神经元”之间采用全连逡逑接的映射方式与下一层网络中的神经元互联["],其结构如图1.2所示。逡逑┙劐义贤迹保踩由窬珏义显谌由窬缰校ㄒ迤渲械囊桓龈兄魑吧窬薄I喜阃绲拿垮义细錾窬胂虏阃绲拿扛錾窬樱钩闪巳拥耐纾幌虏愕拿扛錾皴义暇萑ㄖ亟邮苌喜阃缰忻扛錾窬莸奶卣髦担糜爰せ钐崛√劐义险鳌>嗖闾卣魈崛。钪湛梢缘玫皆て诘慕峁郏保保荨M贾性残谓诘愦砩窬义狭叽聿煌娜ㄖ怠e义先由窬绯鱿忠潦季捅还惴河τ糜谕枷翊砹煊颍缡中词质侗稹㈠义先肆呈侗鸬龋郏保保荩恢两袢栽诖蠊婺J莸亩喾掷辔侍庵杏τ霉惴海缈拼笱斗晒惧义仙逃玫耐枷袷侗鹣低车取e义希保保炒钤厣窬绲挠布教ㄥ义希保危茫校掌教ㄥ义希茫校帐侵醒氪砥鳎侵髁鞯拇砥骱诵模涸鹜瓿筛髦炙闶呒怂悖义系骷扑慊鞑糠治榷ㄔ诵小K淙凰芄恍骷扑慊诟鞑考ぷ
本文编号:2721490
本文链接:https://www.wllwen.com/kejilunwen/dianzigongchenglunwen/2721490.html