m使用FPGA实现基于BP神经网络的英文字母识别,开发平台为vivado2019.2,verilog编程,附带matlab辅助验证

简介: m使用FPGA实现基于BP神经网络的英文字母识别,开发平台为vivado2019.2,verilog编程,附带matlab辅助验证

1.算法描述

    神经网络主要由处理单元、网络拓扑结构、训练规则组成。处理单元是神经网络的基本操作单元,用以模拟人脑神经元的功能。一个处理单元有多个输入、输出,输入端模拟脑神经的树突功能,起信息传递作用;输出端模拟脑神经的轴突功能,将处理后的信息传给下一个处理单元,如图1.1所示。

8e8e97e05a262049486a63ff5b4c23ae_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

基本的神经处理单元其等效于人体的神经元,如图2所示,

3e655fc4fb92057de8b1af29d5e5f9e6_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
=> c8c68ff5971775234bf90b318693a0ed_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

  具有相同功能的处理单元构成处理层。常用的多层感知机由输入层、输出层和若干隐含层组成,神经网络的拓扑结构决定了各处理单元、各层之间信息的传递方式与途径。训练规则利用转换函数进行数据处理的加权及求和,训练网络系统进行模式识别,并将其转换成潜在的输出值。神经网络的基本出发点,就是通过简单函数的多次迭代,实现对复杂映射的拟合和逼近。神经网络能够实现一对一、一对多的映射关系。因此,许多实际问题都可以用神经网络模型来解决。

   神经网络的工作过程主要由两个阶段组成,一个阶段是学习期,即训练阶段,此时连接权值可调整,另一个阶段就是工作期,此时,其各个权值固定。

   在学习阶段,训练集中已知类别的输入向量将随机输入给神经网络,每次的输入使得PE之间的连接权重根据一种固定的学习规则得到细致的调整,使得网络的输出向正确的方向转变。随着训练过程的推进,网络的性能得到的改善,直到网络中每一个PE都收敛到合适的权重为止。

   在神经网络的学习阶段,当网络做出错误的判决的时候,那么通过神经网络的学习,应使得网络减少下次犯同样错误的可能性,通常情况下,系统将会给网络一个随机的权值,然后将信号输入到神经网络,网络将输入的模式进行加权求和、并与门限进行比较,然后进行非线性运算从而得到网络的输出。这个时候系统输出正确和错误的概率是相同的,那么这个时候,系统将正确的输出结果的连接权值增大,从而使下次输入同一个信号的时候,得到正确的输出结果。

   通常情况下,按这种方法学习几次后,神经网络将判断的正确率大大提高,一般来说,网络中所含的神经元个数就越多,那么它能够记忆和识别的模式也越多。

   当训练结束进入工作期时,权重系数保持不变,此外神经网络的输入是未知类别的向量,输入的信息经过神经元层层传播,最后在输出层上产生输出向量,根据此输出向量可以将对象划分到某一类中,从而实现对象的模式识别。

以上就是神经网络的基本工作过程。
————————————————

   BP神经网络主要由输入层,隐含层以及输出层三个部分构成。

f97f95da811eabbe8b7a87f84269269e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

   来自外界的信息通过输入层传输进入到隐含层进行处理,并由输出层输出处理结果。当BP神经网络的输出结果和其期望结果之间的误差较大的时候,则进入反向传播阶段,并进行进行审计网络权值的修正,直到输出结果和期望结果误差满足一定条件为止。

其中,信号的前向传播过程的主要步骤如下:

e62685cce36e4fc3be0e39929324a4de_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
a2f238da6a0db17312abd0d442d5df0e_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

其中激活函数

6f5554f0465c4ecc38ac855da2eeb3d6_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

采用查找表方法计算得到:

          clk,
          rst,
          net,
          fx
          );
input clk;
input rst;
input[8:0]net;
output[8:0]fx;
reg [8:0]fx;
always @(posedge clk)
begin
     if(!rst)
     fx<=9'd0;
else begin
     case(net)     //查找结果
     1:fx<=9'd0;
     2:fx<=9'd2;
     3:fx<=9'd5;
     4:fx<=9'd7;
     5:fx<=9'd10;
     6:fx<=9'd12;
     7:fx<=9'd15;
     8:fx<=9'd17;    
     9:fx<=9'd20;
     10:fx<=9'd23;       
…………………….
     511:fx<=9'd505;
     512:fx<=9'd505;      
     default:fx<=9'd0;
     endcase
     end
end
endmodule          

2.仿真效果预览
matlab2022a

vivado2019.2

仿真结果如下:

177e4015ea1a1427cd12cc413ccd3ee8_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
2e28eb8d4e4af4f87cdfaf14440e77ca_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

A对应65,B对应66.。。。

错误率为:1个。总共检测23个。所以正确率为95.5%

3.verilog核心程序

ABCD_signal ABCD_signal_u(
    .i_clk    (i_clk), 
    .i_rst    (~i_rst), 
    .i_sel    (i_sel), 
    .o_feature2(o_feature)
    ); 
//BP
wire signed[8:0] O1;
wire signed[8:0] O2;
wire signed[8:0] O3;
wire signed[8:0] O4;
 
BP_PRO BP_PRO_u(
    .clk  (i_clk), 
    .rst  (i_rst), 
    .X    (o_feature), 
     //16
    .sda11(16'd20550), 
    .sda12(16'd10553), 
    .w11t (16'd45002), 
    .w12t (16'd46211), 
    .w13t (16'd32112), 
    .w14t (16'd34522), 
    .w25t (16'd10552), 
    .w26t (16'd40553), 
    .w27t (16'd10112), 
    .w28t (16'd30452), 
     //8
    .SDA1 (8'd112), 
    .SDA2 (8'd67), 
    .SDA3 (8'd211), 
    .SDA4 (8'd92), 
    .W11  (8'd132), 
    .W12  (8'd112), 
    .W21  (8'd122), 
    .W22  (8'd172), 
    .W31  (8'd132), 
    .W32  (8'd202), 
    .W41  (8'd172), 
    .W42  (8'd202), 
    .O1   (O1), 
    .O2   (O2), 
    .O3   (O3), 
    .O4   (O4)
    );
 
//Output
check_out check_out_u(
    .i_clk(i_clk),
     .i_rst(~i_rst),
    .i_o1(O1), 
    .i_o2(O2), 
    .i_o3(O3), 
    .i_o4(O4), 
    .o_o (o_checkout)
    );
 
 
//计算正确率
cal_error cal_error_u(
    .i_clk      (i_clk), 
    .i_rst      (~i_rst), 
    .i_regresult(o_checkout), 
    .o_check_clk(o_check_clk), 
     .o_check_count(o_check_count),
    .o_error    (o_error), 
    .o_correct  (o_correct)
    );
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
基于FPGA的SNN脉冲神经网络之IM神经元verilog实现,包含testbench
本内容介绍了一种基于Izhikevich-Memristive(IM)神经元模型的算法,该模型结合忆阻器特性和神经元动力学,适用于神经形态计算。算法通过Vivado2019.2运行,提供无水印运行效果预览及部分核心程序,完整版含中文注释与操作视频。理论部分详细解析了Izhikevich神经元方程及其放电行为,包括膜电位、恢复变量等参数的作用,并探讨了IM模型在人工智能和脑机接口领域的应用潜力。
|
29天前
|
机器学习/深度学习 算法 Python
matlab思维进化算法优化BP神经网络
matlab思维进化算法优化BP神经网络
|
4月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于FPGA的SNN脉冲神经网络之LIF神经元verilog实现,包含testbench
本项目展示了 LIF(Leaky Integrate-and-Fire)神经元算法的实现与应用,含无水印运行效果预览。基于 Vivado2019.2 开发,完整代码配有中文注释及操作视频。LIF 模型模拟生物神经元特性,通过积分输入信号并判断膜电位是否达阈值产生脉冲,相较于 Hodgkin-Huxley 模型更简化,适合大规模神经网络模拟。核心程序片段示例,助您快速上手。
|
6月前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
296 80
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
5月前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
293 10
|
6月前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
6月前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析不同码长,码率,迭代次数以及信道类型对译码性能的影响
本内容介绍基于MATLAB 2022a的低密度奇偶校验码(LDPC)仿真,展示了完整的无水印仿真结果。LDPC是一种逼近香农限的信道编码技术,广泛应用于现代通信系统。BP译码算法通过Tanner图上的消息传递实现高效译码。仿真程序涵盖了不同Eb/N0下的误码率计算,并分析了码长、码率、迭代次数和信道类型对译码性能的影响。核心代码实现了LDPC编码、BPSK调制、高斯信道传输及BP译码过程,最终绘制误码率曲线并保存数据。 字符数:239
249 5
|
6月前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
131 12

热门文章

最新文章