本推送分享基于matlab的反向传播神经网络(BPNN)案例:(数据来自MINIST集)。BPNN的原理不再介绍,仅介绍算法实现的过程。
注:本案例中所有内容从底层写起,不借助工具箱。
训练集已经整理成MATLAB标准数据格式,每一列代表一个训练样本(数字)。测试集具有同样的格式。
通过下方代码即可将数字图像显示出来:
从直接启动,并点击开始。
•如果不勾选左上角的,GUI界面上会利用图图已经训练好的模型进行测试,并绘制出测试结果。
预训练的模型参数在中。
•如果勾选左上角的后点开始,会提示用户输入训练参数:
直接从启动运行,会提示用户输入训练参数,并给出训练结果。此时可视化过程需要自行完成。
function [y] = activeFcn(w,b,x)
% 输出函数
y = w*x + b;
n = length(y);
for i =1:n
y(i)=1.0/(1+exp(-y(i)));
end
y;
end
反向传播算法
%更新公式的实现(反向传播算法)
o_update = (y-out_put).*out_put.*(1-out_put);
h_update = ((w')*o_update).*hid_put.*(1-hid_put);
outw_update = learnFactor*(o_update*(hid_put'));
outb_update = learnFactor*o_update;
hidw_update = learnFactor*(h_update*(x'));
hidb_update = learnFactor*h_update;
w = w + outw_update;
b = b+ outb_update;
w_h = w_h +hidw_update;
b_h =b_h +hidb_update;
•关注微信公众号“图通道”回复下载完整代码与数据集;
•打包图图的所有作品: https://mbd.pub/o/bread/mbd-YZaYm55t ;
•交流群:549621236;