Matlab从算法上实现基础BP神经网络

根据BP神经网络的误差梯度下降以及误差反向传递的原理,使用Matlab实现算法。本文设计了一个输入层为3,中间层为6,输出层为5的神经网络。其中theta1和theta2分别为两层参数,示意图如下:

 

1.主程序

%随机生成一组参数
theta_1=rand(6,3);
theta_2=rand(5,6);
%训练
for i=1:500
    x=rand(1,3);
    y=createSample(x(1),x(2),x(3));%自己随便写的一个非线性函数
    [theta_1,theta_2]=bpFunction(theta_1,theta_2,x,y);%自己写的BP网络
end
%测试
x=rand(1,3);
y=createSample(x(1),x(2),x(3));
z_2=x*(theta_1)';%单节点求和,然后组合成向量
a_2=sigmf(z_2,[1,0]);%隐层sigmoid输出激励

z_3=a_2*(theta_2)';
a_3=sigmf(z_3,[1,0]);%输出层sigmoid输出结果

测试的函数实际上就是神经网络正向传递的过程,测试结果如下:

 

500次训练:y是标准答案,a_3是输出结果

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值