BP神經(jīng)網(wǎng)絡(luò)圖像壓縮算法乘累加單元的FPGA設(shè)計
(1)用小的隨機數(shù)對每一層的權(quán)值和偏差初始化,以保證網(wǎng)絡(luò)不被大的加權(quán)輸入飽和,并進行以下參數(shù)的設(shè)定或初始化:期望誤差最小值;最大循環(huán)次數(shù);修正權(quán)值的學(xué)習(xí)速率;
(2)將原始圖像分為4×4或8×8大小的塊,選取其中一塊的像素值作為訓(xùn)練樣本接入到輸入層,計算各層輸出:本文引用地址:http://butianyuan.cn/article/191891.htm
其中:f(?)為BP網(wǎng)絡(luò)中各層的傳輸函數(shù)。
(3)計算網(wǎng)絡(luò)輸出與期望輸出之間的誤差,判斷是否小于期望誤差,是則訓(xùn)練結(jié)束,否則至下一步,其中反傳誤差的計算式為:
(4)計算各層誤差反傳信號;
(5)調(diào)整各層權(quán)值和閾值;
(6)檢查是否對所有樣本完成一次訓(xùn)練,是則返回步驟(2),否則至步驟(7);
(7)檢查網(wǎng)絡(luò)是否達到最大循環(huán)次數(shù),是則訓(xùn)練結(jié)束,否則返回步驟(2)。
經(jīng)過多次訓(xùn)練,最后找出最好的一組權(quán)值和閾值,組成三層前饋神經(jīng)網(wǎng)絡(luò),用于該算法的FPGA設(shè)計。
其中,在數(shù)據(jù)預(yù)處理部分,首先將原始圖像分成n×n的小塊,以每一小塊為單位進行歸一化。歸一化的目的,主要有以下兩點:
(1)BP網(wǎng)絡(luò)的神經(jīng)元均采用Sigmoid轉(zhuǎn)移函數(shù),變換后可防止因凈輸入的絕對值過大而使神經(jīng)元輸出飽和,繼而使權(quán)值調(diào)整進入誤差曲面的平坦區(qū);
(2)Sigmoid轉(zhuǎn)移函數(shù)的輸出在-1~+1之間,作為信號的輸出數(shù)據(jù)如不進行變換處理,勢必使數(shù)值大的輸出分量絕對誤差大,數(shù)值小的輸出分量絕對誤差小。網(wǎng)絡(luò)訓(xùn)練時只針對輸出的總誤差調(diào)整權(quán)值,其結(jié)果是在總誤差中占份額小的輸出分量相對誤差較大,對輸出量進行尺度變化后這個問題可迎刃而解。
歸一化后得到以每小塊的灰度值為列向量組成的待壓縮矩陣,將該矩陣存儲在RAM里,然后以每一列為單位發(fā)送給先人先出寄存器FIFO(First Input FirstOutput);由FIFO將向量x1,x2,…,xn以流水(pipe-line)方式依次傳人各乘累加器MAC(Multiply-Accu-mulate),相乘累加求和后,送入LUT(Lookup Table)得到隱層相應(yīng)的節(jié)點值,這里L(fēng)UT是實現(xiàn)Sigmoid函數(shù)及其導(dǎo)函數(shù)的映射。
在整個電路的設(shè)計中,采用IP(Intellectual Prop-erty)核及VHDL代碼相結(jié)合的設(shè)計方法,可重載IP軟核,具有通用性好,便于移植等優(yōu)點,但很多是收費的,比如說一個高性能流水線設(shè)計的MAC軟核,所以基于成本考慮,使用VHDL語言完成MAC模塊的設(shè)計,而RAM和FIFO模塊則采用免費的可重載IP軟核,使整個系統(tǒng)的設(shè)計達到最佳性價比。在壓縮算法的實現(xiàn)中,乘累加單元是共同部分,也是編碼和譯碼器FPGA實現(xiàn)的關(guān)鍵。
2.2 乘累加器MAC的流水線設(shè)計及其仿真
流水線設(shè)計是指將組合邏輯延時路徑系統(tǒng)地分割,并在各個部分(分級)之間插人寄存器暫存中間數(shù)據(jù)的方法。流水線縮短了在一個時鐘周期內(nèi)信號通過的組合邏輯電路延時路徑長度,從而提高時鐘頻率。對于同步電路,其速度指同步電路時鐘的頻率。同步時鐘愈快,電路處理數(shù)據(jù)的時間間隔越短,電路在單位時間內(nèi)處理的數(shù)據(jù)量就愈大,即電路的吞吐量就越大。理論而言,采用流水線技術(shù)能夠提高同步電路的運行速度。MAC電路是實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的重要組成部分,在許多數(shù)字信號處理領(lǐng)域也有著廣泛應(yīng)用,比如數(shù)字解調(diào)器、數(shù)字濾波器和均衡器,所以如何提高MAC的效率和運算速度具有極高的使用價值。本方案采用的MAC設(shè)計以四輸入為例。
四輸入的MAC電路必須執(zhí)行四次乘法操作和兩次加法操作,以及最后的兩次累加操作。如果按照非流水線設(shè)計,完成一次對輸入的處理,需要這三步延遲時間的總和,這會降低一個高性能系統(tǒng)的效率。而采用流水線設(shè)計,則可以避免這種延遲,將MAC的操作安排的像一條裝配線一樣,也就是說,通過這種設(shè)計它可以使系統(tǒng)執(zhí)行的時鐘周期減小到流水線中最慢步驟所需的操作時間,而不是各步驟延遲時間之和,如圖3所示。
在第一個時鐘邊沿,第一對數(shù)據(jù)被存儲在輸入寄存器中。在第一個時鐘周期,乘法器對第一對數(shù)據(jù)進行乘法運算,同時系統(tǒng)為下一對數(shù)據(jù)的輸入作準(zhǔn)備。在第二個時鐘邊沿,第一對數(shù)據(jù)的積存儲在第一個流水線寄存器,且第二對數(shù)據(jù)已經(jīng)進入輸入寄存器。在第二個時鐘周期,完成對第一對數(shù)據(jù)積的兩次加法操作,而乘法器完成第二對數(shù)據(jù)的積運算,同時準(zhǔn)備接收第三隊數(shù)據(jù)。在第三個時鐘邊沿,這些數(shù)據(jù)分別存放在第二個流水線寄存器,第一個流水線寄存器,以及輸入寄存器中。在第三個時鐘周期,完成對第一對數(shù)據(jù)和之前數(shù)據(jù)的累加求和,對第二對數(shù)據(jù)的兩次加法操作,對第一對數(shù)據(jù)的乘法運算,并準(zhǔn)備接收第四對數(shù)據(jù)。在第四個始終邊沿,累加器中的和將被更新。
評論