资源简介
自己编的非工具箱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
- 上一篇:青果教务网络管理系统入侵破解详细过程
- 下一篇:北航计组实验代码、电路一
相关资源
- 多道程序,进程,分时系统模拟 OS实
- 单片机STC89C58程序
- dsp2812外部中断控制实验程序
- MSP430 单片机读写SD卡程序带fat文件系
- rtex 总线 驱动程序
- STM32F103 TFT彩屏显示图片和汉字字符(
- STM32F103 TFT彩屏显示汉字字符(取摸
- 24LC02EEPROM源程序代码
- 声音识别系统子程序
- 微信小程序全套源代码 最新 最全 好
- 西门子S7-300程序密码破解
- SC_FDE 仿真程序
- 单片机MC9S12XS128串口接收指令控制小车
- 简单通信程序-tcp.rar
- msp430 模块程序 包括DS18B20 PS2 串口 电
- opencv3.4.1人脸识别小程序
- LTC6803程序
- 基于51单片机的万年历程序
- 基于51单片机的lcd篮球计分器程序
- web动态网页程序员圣诞表白网页
- 三次样条插值C程序,三次样条插值将
- arduino程序,用两个红外线传感器来判
- pwa程序
- 汇编语言程序设计》答案(第二版)
- 第6章 Tracert程序.zip
- 51单片机 等精度测频率 LCD显示 C程序
- 小程序案例视频
- 基于harris角点特征的图像配准程序
- Gallager原版LDPC译码算法仿真程序
- Xwindow程序设计入门
评论
共有 条评论