资源简介
自己编的非工具箱BP神经网络程序 对大家理解BP网络权值和阈值的具体怎么修改有很大的帮助

代码片段和文件信息
clear all
clc
%原函数
i=1;
for t1=2000*pi:0.1:2004*pi;
x(i)=3000+100*sin(t1)+10*rand(1);
i=i+1;
end
i=1;
for t2=2000*pi:0.15:2004*pi;
x2(i)=3000+100*sin(t2)+10*rand(1);
i=i+1;
end
t1=2000*pi:0.1:2004*pi;
[pnminpmaxptnmintmaxt] = premnmx(t1x);
t1=pn;x=tn;%归一化
%[pnminpmaxp] = premnmx(t1);
%t1=pn;%归一化
max_epoch=1000;
emax=0.00001;
delta=0.1;
[m1n]=size(t1);
[mn]=size(x);
h=20 %隐含层有20个节点
V=rand(hm1);
B1=rand(h1);
W=rand(mh);
B2=rand(m1);%权值和阈值初始化
%VB1是输入层到隐层的权值和阈值;W,B2是隐层到输出层的权值和阈值
tic
for k=1:max_epoch
q=randperm(n); %产生随机1-n的数列,为后面的打乱顺序输入做准备
for p=1:n
q1=q(p);
%计算从输入层到隐层
net1=V*t1(:q1)+B1;
y1=1./(1+exp(-net1)); %S型
%计算从隐层到输出层
net2=W*y1+B2;
y2=net2; %线性
e=x(q1)-y2;%计算误差
%调整W、V、B1、B2
V=V+delta*(y1.*(1-y1).*(e‘*W)‘)*t1(:q1)‘;
B1=B1+delta*y1.*(1-y1).*(e‘*W)‘;
W=W+delta*e*y1‘;
B2=B2+delta*e;
end
%计算总体误差,判断迭代是否停止
net3=V*t1+B1*ones(1n);
y3=1./(1+exp(-net3));
y4=W*y3+B2*ones(1n);
ee(k)=0.5*(x-y4)*(x-y4)‘;
if ee(k) break
end
end
toc
figure(1)
plot(ee);
legend(‘迭代误差‘)
xlabel(‘迭代次数‘);
ylabel(‘训练误差‘);
figure(2)
plot(t1x‘b‘);
hold on
plot(t1y4‘r--‘);
legend(‘样本数据‘‘BP网络输出‘);
%验证训练效果
t2=2000*pi:0.15:2004*pi;
l1=length(t2)
net1=[];
net2=[];
[pnminpmaxptnmintmaxt] = premnmx(t2x2);
t2=pn;x2=tn;
for j=1:l1
net1=logsig(t2(j)*V‘+B1‘);%1/(1+exp(-t1));%计算第一层输出
net2(j)=W*net1‘+B2;%计算输出层输出
%e1(j)=x2(j)-net2(j);%计算误差
end
i=1;
for t2=2000*pi:0.15:2004*pi;
x2(i)=3000+100*sin(t2)+10*rand(1);
i=i+1;
end
net22=postmnmx(net2mintmaxt);
t2=2000*pi:0.15:2004*pi;
for j=1:l1
e1(j)=x2(j)-net22(j);%计算误差
end
figure(3)
plot(t2x2‘b‘)
hold on
plot(t2net22‘r*‘)
legend(‘样本数据‘‘BP网络输出‘);
xlabel(‘x‘);
ylabel(‘y‘);
figure(4)
plot(e1)
legend(‘误差曲线‘)
xlabel(‘x‘);
ylabel(‘测试误差‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2284 2010-01-16 14:30 BP\BP1.m
文件 1510 2010-01-16 14:31 BP\BP2.m
文件 3702 2010-01-14 20:28 BP\BP3.m
文件 2414 2010-01-14 14:33 BP\BP4.m
目录 0 2010-04-02 10:47 BP
----------- --------- ---------- ----- ----
9910 5
- 上一篇:青果教务网络管理系统入侵破解详细过程
- 下一篇:北航计组实验代码、电路一
相关资源
- bp神经网络源代码,可直接运行
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- E4A无障碍跨程序操作类库(带源码、
- labview魔方程序
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- SVR算法程序可运行
- labview编程软件滤波器以及编写程序设
- 电力系统潮流计算程序集合
- 仿知乎界面小程序源代码
- STM32蓝牙和串口程序
- elantech触控板驱动程序 v13.6.11 官方最
- 根据硬件ID和程序ID生成注册码
-
imx6qSBP的jli
nk初始化脚本 - 用python编写的移动彩信的发送程序
- TCL-S1916 ,1924交换机管理程序
- 51单片机PWM程序,占空比、周期可调整
- 嵌入式图形界面MiniGUI的示例程序9例
- BCG帮助手册,完整版_修正
- 数字频率合成dds正弦波基于FPGA的DDS产
- 28335CAN调试程序
- 导线测量平差程序 很实用
- USB转串口驱动,FT232R驱动程序,最新
- 改进的BP神经网络算法
- 通风网络解算程序 fortran90
- 编写简单的RMI程序 多线程web 服务器
- 图论软件包(图论里的程序)
- A星算法_原理讲解_例子
评论
共有 条评论