matlab中bp神经网络梯度怎么调精度,如何提高BP神经网络模型的预测精度?
请高人指点,以下为我为毕业论文设计的BP神经网络,目前存在两个问题:
1.模型预测精度特别低。
我已经尝试改变隐含层节点数(从20到100都一一试过了),并将传递函数和训练函数都做了替换,但均无明显效果。不知该从何处着手提高模型的预测和训练精度。
2.每次程序运行完,都要提示错误,貌似是运算符合不对,但是改过之后依然有误。不知该怎么改?clc;
clear;
close all;
warning off;
tic;
%用2012年数据创建模型,2011年数据验证模型精确度。 自动读取文本文档,第一行为农学参数,第二行至最后一行都为光谱值。
data1=importdata('E:\2012SR.txt');
data2=importdata('E:\2011SR.txt');
M1 = size(data1,2);%行
Y1 = data1(1,1:M1);%第一行所有列,农学参数,2012
M2 = size(data2,2);
Y2 = data2(1,1:M2);%第一行所有列,农学参数,2011
P =data1(2:size(data1,1),:); %2012年光谱数据,文本里第二行开始,所有列
T = Y1 ; %2012年农学参数,第一行所有列
N2011_validation=data2(2:size(data2,1),:) ; %2011年光谱数据,文本里第二行开始,所有列
N2012_data=P; %2012年光谱数据
net=newff(P,T,[61 1],{'tansig' 'purelin'},'traingd')
t1 = clock; %计时开始
net = fitnet(70);
net.trainParam.epochs = 5000; %设置训练次数
net.trainParam.goal = 0.01; %设置性能函数(训练要求精度)
net.trainParam.show = 1; %每10显示
net.trainParam.Ir = 0.005; %设置学习速率
net = train(net,P,T); %训练BP网络(P为输入,T为输出)
datat = etime(clock,t1);
Nets = net;
view(Nets);
%2011年数据进行验证
y = sim(net,N2011_validation);
figure;
plot(y,'k-x');hold on
plot(N2011_validation(1:126),'.k');hold on
ymin=-1;
ymax=4;
axis([0 length(N2011_validation) floor(ymin) ceil(ymax)]);
legend('Pridicted values','Measured values');
title('模型预测结果, 烟叶N含量');
%2012年数据进行测试
y1=sim(net,N2012_data);
figure;
plot(y1,'k-x');
hold on;
plot(N2012_data(1:102),'.k');
ymin=0;
ymax=4;
axis([0 length(N2012_data) floor(ymin) ceil(ymax)]);
legend('Pridicted values','Measured values');
title('模型训练结果, 烟叶N含量');
%导入到文本文件
fid=fopen('E:\2012SR1.txt','wt');
if fid == -1
error('文件打开失败');
end
fprintf(fid,'实际值 预测值\n');
A=[N2012_data;y1];
fprintf(fid,'%f %f\n',A);
fclose(fid);
fid=fopen('E:\2011SR1.txt','wt');
if fid == -1
error('文件打开失败');
end
fprintf(fid,'实际值 预测值\n');
A=[N2011_validation;y];
fprintf(fid,'%f %f\n',A);
fclose(fid);
%预测效果分析
for i = 1:length(N2011_validation);
K(i) = abs(y(i) - N2011_validation(i))/(N2011_validation(i));
end
RMSE = sqrt(sum((y-N2011_validation)*(y-N2011_validation)')/length(N2011_validation))
E= 1-sum((y-N2011_validation)*(y-N2011_validation)')/sum((N2011_validation-mean(N2011_validation))*(N2011_validation-mean(N2011_validation))')
k= average(sum(abs((y-N2011_validation)/(N2011_validation))))
%训练效果分析
for i = 1:length(N2012_data);
K_1(i) = average(sum(abs((y1(i)-N2012_data(i))/(N2012_data(i)))));
end
RMSE_1=sqrt(sum((y1-N2012_data)*(y1-N2012_data)')/length(N2012_data))
E_1= 1-sum((y1-N2012_data)*(y1-N2012_data)')/sum((N2012_data-mean(N2012_data))*(N2012_data-mean(N2012_data))')
k_1 = average(sum(abs((y1-N2012_data)/(N2012_data))))
2012-12-30 17:23 上传
点击文件名下载附件
30.54 KB, 下载次数: 514
2012-12-30 17:23 上传
点击文件名下载附件
23.52 KB, 下载次数: 391
matlab中bp神经网络梯度怎么调精度,如何提高BP神经网络模型的预测精度?相关推荐
- matlab 神经网络设计多层隐含层_[rbf神经网络]请教关于MATLAB中RBF神经网络隐含层神经元个数的问题...
rbf神经网络 请教关于MATLAB中RBF神经网络隐含层神经元个数的问题 问题补充:MATLAB中用newrb(P, T, goal, spread)创建的神经网络,用于数据的预测,程序可以运行并能 ...
- MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比
MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比 目录 输出结果 实现代码 输出结果 实现代码 load spectra_data.mat plot(NIR') t ...
- matlab中的神经网络怎么用,matlab怎么搭建神经网络
1.怎样用matlab建立bp神经网络 net=train(net, p, t);把这句改成net=train(net, p', t');试试,matlab应该默认使用列向量.或者直接使用matlab ...
- matlab中的神经网络怎么用,matlab如何编写神经网络
1.matlab中神经网络怎么使用 可以直接用神经网络工具箱,GUI内设置训练的输入.目标.训练方法.迭代次数等. 谷歌人工智能写作项目:小发猫 2.matlab神经网络工具箱怎么使用训练好的神经网络 ...
- matlab模糊工具箱使用,MATLAB中模糊神经网络工具箱的使用 - 全文
前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有"扪参历井仰胁息"之感.别的倒是没什么,只是神经网络的数据组织结构有些"怪异",要是不小心就会导致工具箱 ...
- MATLAB中模糊神经网络工具箱的使用
前些天小师妹(好吧,我向政府和人民坦白,小师妹是我虚构的)向我请教MATLAB里模糊神经网络工具箱的使用方法,说是没有搜索到好的教程.正所谓'勿以善小而不为',' 我不入地狱谁爱入谁入','天下兴亡匹 ...
- matlab中的神经网络怎么用,matlab神经网络训练方法
如何利用matlab进行神经网络预测 matlab 带有神经网络工具箱,可直接调用,建议找本书看看,或者MATLAB论坛找例子. 核心调用语句如下:%数据输入%选连样本输入输出数据归一化[inputn ...
- bp神经网络是用来干嘛的,BP神经网络什么意思
BP神经网络的原理的BP什么意思 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(ErrorBack-Prooaeation),简称为B ...
- bp神经网络图像特征提取,一文搞定bp神经网络
本人新手,在做BP神经网络的时候遇到了一个问题 5 不知你是不是用matlab的神经网络工具箱,因为一般神经网络都是成批处理的,每一次调整都会综合所有样本的误差进行调整,而不是一类一类图片的去调整,所 ...
- bp神经网络是用来干嘛的,bp神经网络的应用领域
BP神经网络是用来干嘛的阿? 用样本去训练一个BP网络,然后用新的样本作为输入,再通过这个已经训练好的BP网络,得到的数据就是仿真的结果,这就是BP网络仿真. 我们训练一个BP网络就好像是在训练一个神 ...
最新文章
- android跨域 元素,Android之app作为服务器解决跨域问题
- eclipse安装birt插件
- SpringBoot启动项目时提示:Error:java: 读取***.jar时出错;
- 【Linux】一步一步学Linux——cat/tac命令(38)
- [爬虫+数据分析] 分析北京Python开发的现状
- python批量读取csv并写入_Python如何批量读取CSV文件中指定信息并写入doc文件命名中?...
- html文档主体的根标签,2 HTML简介标签嵌套和并列关系文档声明
- 2018 开始认真学习点python
- hdu1861 游船出租【模拟】
- kotlin之高阶函数
- yum 命令提示语法错误
- inline详细讲解【C语言】
- 大盘点|三维视觉与自动驾驶数据集(40个)
- When Does Self-Supervision Help Graph Convolutional Networks?
- Microsoft 365独家安全解决方案
- [MSSQL2005]再看CTE
- 360手机刷机·LSPosed安装和使用教程
- cuteftp.exe
- 基于STM32的照片查看器课程报告
- H3C WLAN基本配置