BP神经网络简单代码分析

本文介绍了BP神经网络的基本构建过程,包括newff()、sim()等关键函数,并通过实例展示了训练过程,分析了训练窗口的信息,如训练次数、性能指标等。同时,文章也探讨了感知器神经网络的构建和学习训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BP神经网络的构建

BP网是一种前馈多层(一般都选用3层)网络。理论已经证明一个三层网络可以无限近似任意连续函数。

在进入代码前,我们需先认识这些有关神经网络的函数:

  • newff()函数:建立一个可训练的前馈网络。
  • sim()函数:运行仿真。
  • init()函数:初始化神经网络,根据最新的网络初始化函数返回神经网络的权值和误差。
  • sign()函数:符号函数,sign(整数)=1;sign(负数)=-1;sign(0)=0。
  • tansig()函数: 神经网络层传递函数,将神经网络层的净输入转换为净输出。
  • purelin()函数:神经网络层传递函数。
  • newp()函数:构造感知器模型。
  • errsurf()函数:单输入神经元的误差面。
  • plotes()函数:用来绘制二维图像。
  • train()函数:对神经网络进行训练,会弹出窗体。
    在这里插入图片描述

在了解这些基础函数的基础上,我们来看一个构建BP神经网络的matlab代码:

% BP网络
% BP神经网络的构建
net=newff([-1 2;0 5],[3,1],{
   
   'tansig','purelin'},'traingd')
%newff([-1 2;0 5],[3,1],{
   
   'tansig','purelin'},'traingd')建立一个可训练的前馈网络
%创建一个二层网络,它的输入是两个元素的向量,输入向量的第一个元素的范围是[-1 2],输入向量的第二个元素的范围是[0 5]%第一层有三个神经元,第二层有一个神经元。
%第一层的传递函数是tansig(正切S型传递函数),输出层的传递函数是purelin(线性传递函数)。训练函数是traingd(最速下降BP算法)。
%net.IW{
   
   1}	%输入层到隐含层的权重
%net.b{
   
   1}	%输入层的阈值

p=[1;2];	%p为网络输入
a=sim(net,p)	%sim()函数对于神经网络进行仿真,返回输出
net=init(net);	%init(net)根据最新的网络初始化函数返回神经网络的权值和误差,此时new.IW{
   
   1}、net.b{
   
   1}的值已改变
a=sim(net,p)

p2=net.IW{
   
   1}*p+net.b{
   
   1}	%p2为隐含层的输入
a2=sign(p2)	%符号函数
a3=tansig(a2)	%神经网络层传递函数:将神经网络层的净输入转换为净输出
a4=purelin(a3)	%线性传递函数:输入与输出值可取任意值,输入值=输出值

net.b{
   
   2}	%隐含层的阈值
net.b{
   
   1}	%输入层的阈值

net.IW{
   
   1}	%输入层到隐含层的权重
net.IW{
   
   2}	%隐含层到输出层的权重
0.7616+net.b{
   
   2}
a-net.b{
   
   2}
(a-net.b{
   
   2})/ 0.7616

p1=[0;0];	%改变网络输入
a5=sim(net,p1)
net.b{
   
   2}


% BP网络
% BP神经网络的构建
net=newff([-1 2;0 5],[3,1],{
   
   'tansig','purelin'},'traingd')
p=[1;2];
a=sim(net,p)
net=init(net);
a=sim(net,p)
p2=net.IW{
   
   1}*p+net.b{
   
   1}
a2=sign(p2)
a3=tansig(a2)
a4=purelin(a3)
net.b{
   
   2}
net.b{
   
   1}

P=[1.2;3;0.5;1.6]
W=[0.3 0.6 0.1 0.8]
net1=newp([0 2;0 2;0 2;0 2],1,'purelin');
net2=newp([0 2;0 2;0 2;0 2],1,'logsig');
net3=newp([0 2;0 2;0 2;0 2],1,'tansig');
net4=newp([0 2;0 2;0 2;0 2],1,'hardlim');

net1.IW{
   
   1}=W;
net2.IW{
   
   1}=W;
net3.IW{
   
   1}=W
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值