%附加动量法 bp网 加入测试集 归一化
%采用三层网:输入层、第一隐层(tansig)、输出层(purelin)。隐层神经元取为4
%结论:需要2.5万次左右收敛,误差在0.05以内
clear all
clc
close all
nntwarn off
load('data.mat'); %载入实验数据
%生成训练样本和测试样本
%测试样本选取方法:每隔10个数据中随机选取一个数据作为测试样本,共10组数据。
%其他数据作为训练样本,共90组。
P=input;
T=output;
P_test=zeros(3,10);
T_test=zeros(1,10);
j=1;
for i=1:10:100
k=floor(rand(1,1)*10);
P_test(:,j)=input(:,i+k);
P(:,i+k-j+1)=[];
T_test(j)=output(i+k);
T(i+k-j+1)=[];
j=j+1;
end
[r,q]=size(P);
[s2,q]=size(T);
s1=4; %隐层神经元数量
%训练样本归一化
P1=P;
for i=1:3
P1(i,:)=(P(i,:)-min(input(i,:)))/(max(input(i,:))-min(input(i,:)));
end
T1=T;
for i=1:q
T1(i)=(T(i)-min(output))/(max(output)-min(output));
end
%测试样本归一化
P1_test=P_test;
for i=1:3
P1_test(i,:)=(P_test(i,:)-min(input(i,:)))/(max(input(i,:))-min(input(i,:)));
end
T1_test=T_test;
for i=1:10
T1_test(i)=(T_test(i)-min(output))/(max(output)-min(output));
end
w1=0.1*ones(s1,r);
b1=0.1*ones(s1,1);
dw1=0.1*zeros(s1,r);
db1=0.1*zeros(s1,1);
w2=0.1*ones(s2,s1);
b2=0.1*ones(s2,1);
dw2=0.1*zeros(s2,s1);
db2=0.1*zeros(s2,1);
err_goal=0.00005; %允许误差
max_epoch=100000; %最大学习轮数
lr=0.1; %学习率=0.1
mc=0.96; %mc为动量因子
epoch=1;
%pause;
for epoch=1:max_epoch
w1=w1+dw1;
w2=w2+dw2;
b1=b1+db1;
b2=b2+db2;
[A1,A2]=simuff(P1,w1,b1,'tansig',w2,b2,'purelin');
E=T1-A2;
SSE(epoch)=sumsqr(E);
if (SSE(epoch)<=err_goal)
figure
ploterr(SSE,err_goal)
break;
end
D2=deltalin(A2,E);
D1=deltatan(A1,D2,w2);
[dw2,db2]=learnbpm(A1,D2,lr,mc,dw2,db2);
[dw1,db1]=learnbpm(P1,D1,lr,mc,dw1,db1);
if (rem(epoch,5000)==0)
ploterr(SSE,err_goal);
SSE(epoch)
pause;
end
end
%网络输出与训练集的比较
[A1,A2]=simuff(P1,w1,b1,'tansig',w2,b2,'purelin');
for i=1:90 %反归一化
A(i)=A2(i)*(max(output)-min(output))+min(output);
end
figure
plot(1:90,A,'*');hold on
plot(1:90,T,'ro');legend('预测值','实际值',4);
title('网络输出与训练集比较');
%测试网络的泛化能力
[test1,test2]=simuff(P1_test,w1,b1,'tansig',w2,b2,'purelin');
for i=1:10 %反归一化
A_test(i)=test2(i)*(max(output)-min(output))+min(output);
end
%作图
figure
subplot(2,1,1);
plot(1:10,A_test,'*');
hold on;
plot(1:10,T_test,'ro');
title('测试该网络泛化能力');legend('预测值','实际值',4);
subplot(2,1,2);
plot(1:10,T_test-A_test);title('预测误差')
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的环境下基于bp网逼近某青霉素发酵过程+使用说明文档.rar
共3个文件
mat:1个
md:1个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 127 浏览量
2024-05-23
21:04:23
上传
评论
收藏 8KB RAR 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的环境下基于bp网逼近某青霉素发酵过程+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于MATLAB实现的环境下基于bp网逼近某青霉素发酵过程+使用说明文档.rar (3个子文件)
bp2.m 3KB
使用说明文档.md 13KB
data.mat 3KB
共 3 条
- 1
资源评论
IT狂飙
- 粉丝: 4825
- 资源: 2653
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功