女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA搭建神經網絡的步驟解析

FPGA設計論壇 ? 來源:CSDN技術社區 ? 2025-06-03 15:51 ? 次閱讀

本文的目的是在一個神經網絡已經通過python或者MATLAB訓練好的神經網絡模型,將訓練好的模型的權重和偏置文件以TXT文件格式導出,然后通過python程序將txt文件轉化為coe文件,(coe文件是為了將其寫入rom,網絡中的權重和偏置通過讀取ROM即可,后續需要修改輸入其他特征值,只需要修改input的rom里面的coe文件即可)。

設計思想

其中sigmoid函數是本次實驗最大的難點,因為sigmoid函數的值是在0-1之間的小數,其值越大,說明該模型的輸出是該結果的幾率越大。但是verilog硬件描述語言,其計算結果只有0或1兩種情況,所以要想直接通過verilog語言計算出sigmoid函數的值是比較復雜的,本次使用的方法為查找表法,通過外部其他語言計算出sigmoid函數的值,然后將其放入查找表,后續當需要使用sigmoid函數時,直接輸出結果。但是這個需要不斷地往里面加值,每更新一次輸入,那么就往sigmoid模塊里面的查找表添加上該輸入的sigmoid值。

由于FPGA的計算是基于數字邏輯和二進制運算,小數計算只能通過 固定點數(即帶有定點小數位的整數表示)來模擬某些浮點數計算。這需要使用額外的邏輯來實現浮點數的運算、舍入和特殊值處理。

但是本文選擇一個簡便的方法,選擇將輸入,權重 分別保留兩位小數(可自己選擇位數,保留越多精度越高,反之精度越低),然后分別將其乘以100,將數據全都變成帶符號整數,然后將其進行乘加運算。將偏置保留4位小數并乘以10000,得到的結果除以10000然后進行sigmoid計算,后續無論添加多少層,都可以以此方法來進行計算。以下為搭建神經網絡的步驟:

step1: 處理數據,將保存好的權重文件轉化為coe文件,然后添加一個ROM,并將coe文件加載進ROM里面;

module input_rom_ctr(

input sys_clk,//50MHz時鐘

input rst_n,//復位,低電平有效

input [5:0] data_deep,

output reg [31:0] rom_data_r, //ROM讀出數據

output reg viald,

output reg [6:0] rom_addr_rr //ROM輸入地址

);

reg [6:0] rom_addr;

//產生ROM地址讀取數據

always @ (posedge sys_clk or negedge rst_n)

begin

if(!rst_n)begin

rom_addr <= 7'd0;

viald <= 1'b1;

end

else if(rom_addr_rr >= (data_deep -1'd1))begin

viald <= 1'b0;

end

else if(rom_addr >= (data_deep - 1'd1))begin

rom_addr <= 7'd0;

end

else begin

rom_addr <= rom_addr+1'b1;

viald <= viald;

end

end

reg [6:0]rom_addr_r;

always @(posedge sys_clk or negedge rst_n) begin

if(!rst_n)begin

rom_addr_r <= 7'd0;

rom_addr_rr <= 7'd0;

end

else begin

rom_addr_r <= rom_addr;

rom_addr_rr <= rom_addr_r;

end

end

wire [31:0] rom_data;

always @(posedge sys_clk or negedge rst_n)begin

if(!rst_n)begin

rom_data_r <= 32'd0;

end

else begin

rom_data_r <= #2 rom_data;

end

end

//實例化ROM

input_rom rom_ip_inst

(

.clka (sys_clk ), //inoput clka

.addra (rom_addr), //input [4:0] addra

.douta (rom_data) //output [7:0] douta

);

endmodule

step2:將ROM里的數據讀取出來,如果數據較少就直接使用二維數組保存數據,較多的話可以添加一個RAM,然后通過調用RAM里面的變量搭建第一層神經網絡(暫不添加sigmoid)。

input_rom_ctr input_rom( //取輸入層的數據存入ram

.sys_clk (clk),//50MHz時鐘

.rst_n (rst_n),//復位,低電平有效

.data_deep(5),

.rom_data_r (rom_data1), //ROM讀出數據

.viald (en_wr1),

.rom_addr_rr (input_index)

);

always @(posedge clk)begin

if(en_wr1) begin

input_layer[input_index] <= rom_data1; ? //從rom里面讀出數據,并將其寫入ram/寄存器里面,后面的神經網絡直接調用寄存器操作

end

else begin

input_data <= input_layer[input_index];//從ram里面讀出來的數據,加載地址就得到相應的數據。

end

end

Step3:通過仿真得到第一層神經網絡每個神經元的乘加結果,并加上偏置后,通過外部計算得到sigmoid值后將其添加到sigmoid模塊的lut查找模塊中,如此反復,最后就可以得到一個神經網絡框架。(sigmoid函數的結果也要乘以100,作為下一層的輸入),最后得到的輸入層的每個神經元的結果就代表其識別結果的概率。

module sigmoid (

input wire signed [31:0] input_value, // 輸入32位有符號整數

output reg signed [31:0] sigmoid_output // 輸出32位有符號整數

);

always @(*) begin //可以看做是一個查找表,將上一層的輸入進入sigmoid函數來進行查找值,然后將得到的值乘以100用于保留兩位小數,精度要求高的就多乘一點

case (input_value)

-2673 : sigmoid_output = 43; //上一層輸入3490,是原本輸入乘以100,保留兩位小數乘以權重乘以100,即改結果是原本結果的10000倍,所以進sigmoid函數的應該是0.349

17232 : sigmoid_output = 85; //建議以后有更多值后繼續添加,查找表越豐滿,后續能使用的輸入就越多。

36380 : sigmoid_output = 97;

124358 : sigmoid_output = 100;

-47650 : sigmoid_output = 1;

-5781 : sigmoid_output = 36;

3657 : sigmoid_output = 59;

-23082 : sigmoid_output = 9;

///上面是第一層隱層的結果,下面是輸出層的結果。

4816 : sigmoid_output = 62;

-3390 : sigmoid_output = 42;

20652 : sigmoid_output = 89;

-4386 : sigmoid_output = 39;

-2004 : sigmoid_output = 45;

-623 : sigmoid_output = 48;

default: sigmoid_output = 0;

endcase

end

endmodule

仿真結果

3b3124c8-3b88-11f0-b715-92fbcf53809c.png

最后的output_layer就是輸出的最后結果。

來源:https://blog.csdn.net/qq_48434158/article/details/132426289

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1643

    文章

    21968

    瀏覽量

    614295
  • matlab
    +關注

    關注

    188

    文章

    2998

    瀏覽量

    233274
  • 神經網絡
    +關注

    關注

    42

    文章

    4809

    瀏覽量

    102826
  • 函數
    +關注

    關注

    3

    文章

    4371

    瀏覽量

    64229
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86223

原文標題:基于FPGA的神經網絡的預測過程的實現

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    遺傳算法 神經網絡 解析

    關于遺傳算法和神經網絡
    發表于 05-19 10:22

    脈沖耦合神經網絡FPGA上的實現誰會?

    脈沖耦合神經網絡(PCNN)在FPGA上的實現,實現數據分類功能,有報酬。QQ470345140.
    發表于 08-25 09:57

    【PYNQ-Z2試用體驗】基于PYNQ的神經網絡自動駕駛小車 - 項目規劃

    神經網絡技術的第三次發展浪潮仍在繼續,在其背后,高性能CPU、GPU和FPGA、ASIC以強大的算力為技術的應用落地提供了有力的支持。然而目前基于FPGA平臺搭建
    發表于 03-02 23:10

    卷積神經網絡如何使用

    卷積神經網絡(CNN)究竟是什么,鑒于神經網絡在工程上經歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發表于 07-17 07:21

    如何設計BP神經網絡圖像壓縮算法?

    (Digital Signal Processor)相比,現場可編程門陣列(Field Programma-ble Gate Array,FPGA)在神經網絡的實現上更具優勢。DSP處理器在處理時采用指令順序執行
    發表于 08-08 06:11

    解析深度學習:卷積神經網絡原理與視覺實踐

    解析深度學習:卷積神經網絡原理與視覺實踐
    發表于 06-14 22:21

    如何移植一個CNN神經網絡FPGA中?

    訓練一個神經網絡并移植到Lattice FPGA上,通常需要開發人員既要懂軟件又要懂數字電路設計,是個不容易的事。好在FPGA廠商為我們提供了許多工具和IP,我們可以在這些工具和IP的基礎上做
    發表于 11-26 07:46

    基于FPGA神經網絡的性能評估及局限性

    FPGA實現神經網絡關鍵問題分析基于FPGA的ANN實現方法基于FPGA神經網絡的性能評估及局限性
    發表于 04-30 06:58

    如何用ARM和FPGA搭建神經網絡處理器通信方案?

    某人工神經網絡FPGA處理器能夠對數據進行運算處理,為了實現集數據通信、操作控制和數據處理于一體的便攜式神經網絡處理器,需要設計一種基于嵌入式ARM內核及現場可編程門陣列FPGA的主
    發表于 05-21 06:35

    基于光學芯片的神經網絡訓練解析,不看肯定后悔

    基于光學芯片的神經網絡訓練解析,不看肯定后悔
    發表于 06-21 06:33

    如何構建神經網絡

    原文鏈接:http://tecdat.cn/?p=5725 神經網絡是一種基于現有數據創建預測的計算系統。如何構建神經網絡神經網絡包括:輸入層:根據現有數據獲取輸入的層隱藏層:使用反向傳播優化輸入變量權重的層,以提高模型的預測
    發表于 07-12 08:02

    圖像預處理和改進神經網絡推理的簡要介紹

    為提升識別準確率,采用改進神經網絡,通過Mnist數據集進行訓練。整體處理過程分為兩步:圖像預處理和改進神經網絡推理。圖像預處理主要根據圖像的特征,將數據處理成規范的格式,而改進神經網絡推理主要用于輸出結果。 整個過程分為兩個
    發表于 12-23 08:07

    基于FPGA的RBF神經網絡硬件實現

    基于FPGA的RBF神經網絡硬件實現說明。
    發表于 04-28 11:24 ?27次下載

    基于FPGA神經網絡硬件實現方法

    基于FPGA神經網絡硬件實現方法說明。
    發表于 06-01 09:35 ?46次下載
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>神經網絡</b>硬件實現方法

    卷積神經網絡模型搭建

    卷積神經網絡模型搭建 卷積神經網絡模型是一種深度學習算法。它已經成為了計算機視覺和自然語言處理等各種領域的主流算法,具有很大的應用前景。本篇文章將詳細介紹卷積神經網絡模型的
    的頭像 發表于 08-21 17:11 ?1221次閱讀