999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

機器學習FPGA硬件實驗設計

2019-01-09 02:55:48湯知日
實驗技術與管理 2018年12期
關鍵詞:優化實驗設計

湯知日, 常 勝

(武漢大學 物理科學與技術學院微電子系, 物理國家級實驗教學示范中心, 湖北 武漢 430072)

神經網絡是機器學習的重要內容[1],也是科學研究的熱點。出于科研和實際工程應用的需要和硬件計算方式與神經網絡并行化本質的契合[2],在硬件電路平臺實現神經網絡已逐漸成為技術發展趨勢之一。FPGA具有的可重用性和操作方便簡單等優勢,因而成為一種進行硬件實驗實現神經網絡的理想方式[3]。

目前還鮮有將“神經網絡硬件化”作為實驗教學內容。本文提出的實驗,首先對神經網絡的基本結構在算法級進行熟悉,再進一步在FPGA上實現圖像分類的并完成設計性能的優化。通過此實驗,既可培養學生對神經網絡的理解和對FPGA數字集成設計技術[4]的掌握,也有望提升學生分析和解決復雜問題的能力及團隊協作的精神。

1 神經網絡概念及算法設計

1.1 神經元模型和算法架構

神經網絡是通過對人腦的基本單元——神經元的建模和連接,探索模擬人腦神經系統的功能模型,并在此基礎上提出的具有學習、聯想、記憶和模式識別等智能信息處理功能的人工系統[5]。神經網絡的一個重要特性是它能從環境中學習,并把學習的結果分布存儲于網絡的突觸連接中。神經網絡的學習是一個過程,在其所處環境的激勵下,相繼給網絡輸入一些樣本模式,并按照一定的規則(學習算法)調整網絡各層的權值矩陣,待網絡各層權值都收斂到一定值[6],學習過程結束。之后,就可使用訓練完成的神經網絡來對真實數據進行分類。

作為實驗的第一部分,讓學生對神經網絡基本概念有所了解。神經元基本結構如圖1所示。

圖1 神經元基本結構建模

根據圖1可得:

其中b=-θ。PR為前端其他神經元的軸突輸出,即此神經元的輸入向量,WR為神經元連接的強度,其值可正可負。通過在誤差反向傳播的過程中修改這個強度值的大小,可模擬生物神經元中存在的興奮和抑制興奮兩種神經遞質。當輸入向量和權值乘積之和大于某一閾值時,該神經元啟動。f即為神經元之間的傳遞函數,也被稱為激發函數或觸發函數。

實驗中訓練和測試采用的數據集為3×3像素的二值字母圖像,一共分為3類,如圖2(a)所示。考慮到對網絡容錯率的分析,采用圖2(b)中的30個圖像對已完成訓練的網絡進行測試。

圖2 3×3像素二值字母圖像

1.2 神經網絡算法設計

采用Matlab作為算法設計平臺,使用其函數工具箱提供的newff函數來創建網絡。具體調用格式為:

net=newff(P,T, [S1 S2…S(N-1)]),…

…{TF1 TF2…TFNI}

其中P和T分別為輸入樣本和期望響應,Si為網絡各層的神經元數目,TFi為網絡各層的傳遞函數類型。

利用此函數創建一個經典的誤差反向傳播(BP)神經網絡,完成字母的圖像識別。網絡的建立和訓練過程如下:

clear

[alphabet,targets]=prprob;

[R,Q]=size(alphabet);

[S2,Q]=size(targets);

S1=10;

net=newff(minmax(alphabet),[S1 S2],...

...{′logsig′ ′logsig′},′traingdx′);

net.LW{2,1}=net.LW{2,1}*0.01;

net.b{2}=net.b{2}*0.01;

net.performFcn='sse';

net.trainParam.goal=0.1;

net.trainParam.epochs=5000;

net.trainParam.mc=0.95;

P=alphabet;

T=targets;

[net,tr]=train(net,P,T);

通過這一部分的學習,可使學生對神經網絡算法有更具體的認識,也實踐了神經網絡軟件設計的手段。

2 神經網絡FPGA硬件實現

2.1 硬件設計框架

利用硬件描述語言Verilog對軟件設計得到的神經網絡算法進行硬件化,實現相應的端口定義、內部寄存器定義、輸出計算結果和訓練過程。實驗中,訓練過程采用狀態機進行表述,使學生對主要的FPGA硬件設計手段更加熟悉[7]。其中主要的訓練過程Verilog代碼如下:

parameter N01=5'b00000,N02=5'b00001,…

always@(posedge clk)

begin

if(!rst)

state<=N01;

else

begin n0<=1;n1<=1;n2<=0;n3<=0;n4<=1;n5<=0;n6<=0;n7<=1;n8<=1;end

case(state)

N01:if(3

……

以3×3圖像為例,誤差計算公式如下:

Δij(n)=ei(n)Wj(n)

由于該網絡的規模較小,可預先將教師信號儲存于寄存器中,直接代入誤差公式計算。

網絡訓練中,權值更新計算如下:

其中A為設置的幅值,A偏大則不容易停留在理想值周邊,甚至有可能處于權值允許范圍的上下限之外,A偏小則權值更新速度較慢,所以需要結合實際情況進行修改。sgn函數標記修正量的正負,從而實現雙向的修正。在硬件設計中可以通過比較器的方式方便快捷地實現該sgn函數的計算。

2.2 傳遞函數的FPGA實現

傳遞函數在BP網絡中起著信息傳播的重要作用。本實驗選擇的算法為

fi=tanh(Ii)

上式傳遞函數為雙曲正切函數。考慮到在FPGA里實現這類反三角函數一直是算法硬件化的難點之一,對其進行分解:

通過計算sinh和cosh函數的值,進而利用除法器得到tanh函數的結果。

具體而言,實驗中選擇cordic算法使傳遞函數得到實現。cordic的實質是循環迭代[8],其核心是先固定一些基準角,再通過不斷地搖擺每一個基準角逼近目標角度值。在x-y直角坐標軸中將點(x1,y1)旋轉到(x2,y2,旋轉角為θ,其原理示意如圖3所示:

圖3 cordic算法坐標旋轉示意圖

使用Verilog語言編寫的cordic算法核心部分如下:

module cordic(dat,clk,done,rst_);

input[10:0] dat;

input clk,rst_;

output reg signed [33:0] done;

……

case(state)

A0:

begin

out_sinh<=0;

out_cosh<=0;

done<=0;

state<=A1;

end

A1:

begin

x1[26:0]<=27'h26A3AD2;

y1[26:0]<=27'h0;

z1[26:0]<=dat_in;

state<=A2;

end

A2:

begin

if(!z1[26])

begin

x2[26:0]<=x1[26:0]+{{1{y1[26]}},y1[26:1]};

y2[26:0]<=y1[26:0]+{{x1[26]},x1[26:1]};

z2[26:0]<=z1[26:0]-27'h1193EA8;

state<=A3;

end

else

begin

x2[26:0]<=x1[26:0]-{{1{y1[26]}},y1[26:1]};

y2[26:0]<=y1[26:0]-{{x1[26]},x1[26:1]};

z2[26:0]<=z1[26:0]+27'h1193EA8;

state<=A3;

end

end

……

3 結果測試和硬件優化

編寫testbench,對訓練和測試部分分別進行測試,并使用Modelsim進行波形仿真,使學生對硬件設計的驗證以及優化手段有很好的掌握[9]。在神經網絡的訓練過程中,得到的權值與誤差的仿真波形如圖4所示:

圖4 訓練過程權值誤差波形仿真圖

圖中表示誤差的e22隨著訓練逐漸減小,權值變化量d22也隨著誤差減小,最終減小為0,即宣告神經網絡訓練完成。

用前述30幅帶誤差的二值圖像作為測試數據集進行驗證,仿真波形如圖5所示:

此波形中,輸出數據最大的那一行即為正確分類。訓練結果表明:所有圖像均分類正確,硬件實現的網絡的識別效果非常好。

圖5 神經網絡測試波形仿真圖

在功能正確的基礎上,可進行硬件優化,提高電路的性能。例如刪除不必要的乘法、精簡電路結構;將復雜組合邏輯寫入獨立的時序邏輯中[10],提高電路頻率。以一個具體優化為例,對于最影響電路時序的路徑(dataout輸出路徑),其為各權值與輸入乘積的和,而乘法器占用資源與處理速度均較慢。考慮到其輸入均為一位,所以可在實驗中采用選擇器取代乘法器,從而降低資源消耗。此外,對電路做流水線處理,采用SPEED模式作為綜合策略[11],可對整體進行速度優化。在FPGA型號選擇為Cyclone II:EP2C35F672C6N的情況下,優化后的硬件性能達到總資源187,組合邏輯89,時鐘頻率208.86 MHz。

最終的板級驗證,使用DEII FPGA開發平臺上的七位數碼管展示測試得到的分類結果。圖6所示分類結果為第二類,即字母V。

圖6 分類功能板級驗證

4 結語

以神經網絡為代表的機器學習硬件設計,是人工智能的一個重要發展方向。通過機器學習FPGA硬件實驗,使學生既能對神經網絡算法有個基本的認識,也能對主流實現手段有深入的掌握,有助于學生理解硬件設計以及各種優化設計的方式[12]。

此基于FPGA平臺的機器學習硬件實驗具有很強的開放性和拓展性。在熟悉神經網絡結構和算法、神經網絡工具箱調用、FPGA設計及硬件優化等環節中均可為學生提供自主學習和拓展的空間。例如在算法熟悉階段,設計了一個學生講授自己通過查閱資料對機器學習理解的環節;在硬件優化階段,設計了一個由學生自行探索優化手段的環節。通過此類翻轉課堂教學手段的導入,培養了學生的獨立思考能力和創新精神,取得了良好的實驗教學效果。

猜你喜歡
優化實驗設計
記一次有趣的實驗
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
做個怪怪長實驗
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
NO與NO2相互轉化實驗的改進
主站蜘蛛池模板: 原味小视频在线www国产| 狠狠色狠狠色综合久久第一次| 亚洲AV无码不卡无码| 谁有在线观看日韩亚洲最新视频| 国产自产视频一区二区三区| 制服丝袜国产精品| 一级毛片在线播放| 国产精品丝袜在线| 中文字幕免费播放| 99这里只有精品在线| 欧美福利在线播放| 日韩黄色在线| 欧美日韩在线成人| 91麻豆国产视频| 精品国产自在现线看久久| 日韩欧美国产成人| 极品国产在线| 欧美伊人色综合久久天天| 日韩一二三区视频精品| 国产自在线拍| 久久综合九色综合97网| 国产在线八区| 一级毛片免费的| 成人午夜视频免费看欧美| 欧美不卡在线视频| 91网址在线播放| 国产精品国产主播在线观看| 欧美在线精品一区二区三区| 最新国产午夜精品视频成人| 91破解版在线亚洲| 精品一區二區久久久久久久網站| 日韩AV手机在线观看蜜芽| 青青草原国产精品啪啪视频| 国产精品综合久久久| 欧美精品高清| 99一级毛片| 精品久久久久久久久久久| 青青青视频蜜桃一区二区| 国产成人91精品免费网址在线| a毛片免费观看| 无码福利视频| 在线日本国产成人免费的| 亚洲欧洲日韩综合| 国产精品99久久久| 国产91av在线| 国产成人91精品| 亚洲国产一成久久精品国产成人综合| 扒开粉嫩的小缝隙喷白浆视频| 国产青榴视频| 亚洲日韩精品欧美中文字幕| 国产成人福利在线| 看国产一级毛片| 白丝美女办公室高潮喷水视频| 粉嫩国产白浆在线观看| 亚洲第一视频区| 久久国产拍爱| 黄色一及毛片| 亚洲狠狠婷婷综合久久久久| 欧美精品一区二区三区中文字幕| 欧美精品v| 国产91色在线| 久久综合国产乱子免费| 午夜欧美理论2019理论| 久久久精品国产亚洲AV日韩| 欧美a在线视频| 爆乳熟妇一区二区三区| 亚洲系列中文字幕一区二区| 精品久久久无码专区中文字幕| 成人综合在线观看| vvvv98国产成人综合青青| 欧美中文字幕无线码视频| 亚洲熟女中文字幕男人总站 | 国产成人久视频免费 | 伊人久久久大香线蕉综合直播| 亚洲国产天堂久久综合| 欧美成人综合在线| 国产乱人伦精品一区二区| 国产精品亚欧美一区二区| 国产成人综合欧美精品久久| 亚洲人成网站观看在线观看| 好吊日免费视频| 伊人久久大香线蕉影院|