面向FPGA的深度學習硬件化方法優(yōu)化與實現(xiàn)
發(fā)布時間:2021-07-06 09:12
卷積神經網絡作為深度學習中的熱門算法之一,在許多計算機視覺應用中取得了巨大的成功,如圖像識別,語音識別。近年來,隨著卷積神經網絡識別精度的不斷提升,它的計算復雜性也在大幅增加。由于CPU已經很難滿足現(xiàn)代CNN對高并行度計算的需求,各種基于GPU、FPGA、ASIC的卷積神經網絡加速器都陸續(xù)得以實現(xiàn)。在這些加速器中,FPGA憑借它強大的可重構能力和低能耗成為了加速器設計中備受歡迎的研究平臺。之前基于FPGA的卷積神經網絡加速器主要是使用傳統(tǒng)的卷積算法。然而,傳統(tǒng)的卷積算法的高算術復雜度限制了加速器的性能,并且顯著增加了設計的難度。已有工作證明,將Winograd算法應用于卷積神經網絡中,可以有效地降低計算復雜度。雖然已有工作實現(xiàn)了基于Winograd算法的加速器,但他們的工作缺少不同規(guī)模Winograd算法實現(xiàn)的加速器的性能對比。在本文中,我們首先提出一種適用于卷積層和完全連接層的加速器體系結構。其次,我們使用高級綜合工具來實現(xiàn)了我們的設計。最后,我們評估了基于兩個不同規(guī)模Winograd算法實現(xiàn)的加速器在資源利用率,性能和效率方面的表現(xiàn)。在VUS440平臺上,我們測試了VGG16模型,...
【文章來源】:國防科技大學湖南省 211工程院校 985工程院校
【文章頁數(shù)】:65 頁
【學位級別】:碩士
【部分圖文】:
FPGA集群的拓撲結構[27]
國防科技大學研究生院碩士學位論文第10頁圖2.1卷積神經網絡前向計算過程訓練(training)CNN的訓練過程就是一個提高前向推理準確性的一個學習過程,通過不斷的訓練為前向計算提供一組高準確率的模型參數(shù)用于推理和判斷。作為有監(jiān)督式算法,CNN的訓練數(shù)據集都是帶有標簽的,CNN會將通過網絡前向計算推理出來的內容和這些數(shù)據的實際標簽進行對比,并將它們之間的差異通過反向傳播反應到各個權值,并對權值進行相應的調整,使其在下一輪前向推理中獲得更高的識別精度。將此過程進行反復迭代,訓練過程最終會收斂到一個較高的推理正確性水平。權值輸入圖像輸出圖像圖2.2卷積層卷積層(ConvolutionLayers)卷積層作為卷積神經網絡的主要網絡層,其卷積操作在卷積神經網絡的所有操作中也是占據了主要的地位[49]。如圖2.2所示,卷積操作就是將一組權值在輸入圖像窗口上進行從左至右、從上至下的平移,每平移一次,權值就與其窗口對應的部分輸入值做對應元素相乘并累加的操作,這每平移一次卷積產生的就是輸出圖像中的一個元素。假設有N個輸入圖像,就有N個KK大小的權值矩陣在輸入圖像上滑動和卷積,一次完整的平移就可以得到一個完整的輸出圖像,若這樣的N個KK大小的權值矩陣總共存在M組,最終就可以得到M個輸出圖像。再假設每次滑動的步長為S,則圖像的卷積可用如下公式表達:
國防科技大學研究生院碩士學位論文第11頁111000[][][][][][][][][][]NKKnijOutmrcInnSriSrjWmnij====++池化層(PoolingLayers)池化層一般都緊跟在卷積層之后,對卷積層的輸出進行降采樣。池化層的目的在于減小特征圖規(guī)模,并保留顯著特征,從效果來看就是將圖像模糊化。如圖2.3所示,池化層采用固定大小的窗口,在特征圖像上滑動,從每次滑動窗口對應的部分輸入圖像中提取出一個有效信息,或最大值,或平均值等作為輸出圖的一個元素。InputfeaturemapOutputfeaturemap圖2.3池化層激活函數(shù)(ActivationFunction)激活函數(shù)也是神經網絡中必不可少的環(huán)節(jié)之一。沒有激活函數(shù)的情況下,神經網絡輸出信號僅僅只是一個線性變換的函數(shù),而作為線性模型的神經網絡學習和模擬復雜類型數(shù)據的能力是非常有限的,像圖像、語音、視頻等。因此激活函數(shù)的加入,充當了神經網絡中的非線性因子,使得神經網絡在理論上可以逼近任何一個函數(shù)。如圖2.4所示,常見的激活函數(shù)有sigmod函數(shù),tanh函數(shù)和ReLU函數(shù)。(a)sigmod函數(shù)(b)tanh函數(shù)(c)ReLU函數(shù)圖2.4激活函數(shù)全連接層(Fully-connectedLayers)全連接層作為卷積神經網絡的最后階段,在整個神經網絡扮演者“分類器”的角色。它負責從依次經由卷積層、池化層和激活函數(shù)層等處理得到的特征圖中提取出具有分類信息的特征向量。如圖2.5所
本文編號:3267963
【文章來源】:國防科技大學湖南省 211工程院校 985工程院校
【文章頁數(shù)】:65 頁
【學位級別】:碩士
【部分圖文】:
FPGA集群的拓撲結構[27]
國防科技大學研究生院碩士學位論文第10頁圖2.1卷積神經網絡前向計算過程訓練(training)CNN的訓練過程就是一個提高前向推理準確性的一個學習過程,通過不斷的訓練為前向計算提供一組高準確率的模型參數(shù)用于推理和判斷。作為有監(jiān)督式算法,CNN的訓練數(shù)據集都是帶有標簽的,CNN會將通過網絡前向計算推理出來的內容和這些數(shù)據的實際標簽進行對比,并將它們之間的差異通過反向傳播反應到各個權值,并對權值進行相應的調整,使其在下一輪前向推理中獲得更高的識別精度。將此過程進行反復迭代,訓練過程最終會收斂到一個較高的推理正確性水平。權值輸入圖像輸出圖像圖2.2卷積層卷積層(ConvolutionLayers)卷積層作為卷積神經網絡的主要網絡層,其卷積操作在卷積神經網絡的所有操作中也是占據了主要的地位[49]。如圖2.2所示,卷積操作就是將一組權值在輸入圖像窗口上進行從左至右、從上至下的平移,每平移一次,權值就與其窗口對應的部分輸入值做對應元素相乘并累加的操作,這每平移一次卷積產生的就是輸出圖像中的一個元素。假設有N個輸入圖像,就有N個KK大小的權值矩陣在輸入圖像上滑動和卷積,一次完整的平移就可以得到一個完整的輸出圖像,若這樣的N個KK大小的權值矩陣總共存在M組,最終就可以得到M個輸出圖像。再假設每次滑動的步長為S,則圖像的卷積可用如下公式表達:
國防科技大學研究生院碩士學位論文第11頁111000[][][][][][][][][][]NKKnijOutmrcInnSriSrjWmnij====++池化層(PoolingLayers)池化層一般都緊跟在卷積層之后,對卷積層的輸出進行降采樣。池化層的目的在于減小特征圖規(guī)模,并保留顯著特征,從效果來看就是將圖像模糊化。如圖2.3所示,池化層采用固定大小的窗口,在特征圖像上滑動,從每次滑動窗口對應的部分輸入圖像中提取出一個有效信息,或最大值,或平均值等作為輸出圖的一個元素。InputfeaturemapOutputfeaturemap圖2.3池化層激活函數(shù)(ActivationFunction)激活函數(shù)也是神經網絡中必不可少的環(huán)節(jié)之一。沒有激活函數(shù)的情況下,神經網絡輸出信號僅僅只是一個線性變換的函數(shù),而作為線性模型的神經網絡學習和模擬復雜類型數(shù)據的能力是非常有限的,像圖像、語音、視頻等。因此激活函數(shù)的加入,充當了神經網絡中的非線性因子,使得神經網絡在理論上可以逼近任何一個函數(shù)。如圖2.4所示,常見的激活函數(shù)有sigmod函數(shù),tanh函數(shù)和ReLU函數(shù)。(a)sigmod函數(shù)(b)tanh函數(shù)(c)ReLU函數(shù)圖2.4激活函數(shù)全連接層(Fully-connectedLayers)全連接層作為卷積神經網絡的最后階段,在整個神經網絡扮演者“分類器”的角色。它負責從依次經由卷積層、池化層和激活函數(shù)層等處理得到的特征圖中提取出具有分類信息的特征向量。如圖2.5所
本文編號:3267963
本文鏈接:http://www.sikaile.net/kejilunwen/zidonghuakongzhilunwen/3267963.html