请高人指点,以下为我为毕业论文设计的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神经网络模型的预测精度?相关推荐

  1. matlab 神经网络设计多层隐含层_[rbf神经网络]请教关于MATLAB中RBF神经网络隐含层神经元个数的问题...

    rbf神经网络 请教关于MATLAB中RBF神经网络隐含层神经元个数的问题 问题补充:MATLAB中用newrb(P, T, goal, spread)创建的神经网络,用于数据的预测,程序可以运行并能 ...

  2. MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比

    MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比 目录 输出结果 实现代码 输出结果 实现代码 load spectra_data.mat plot(NIR') t ...

  3. matlab中的神经网络怎么用,matlab怎么搭建神经网络

    1.怎样用matlab建立bp神经网络 net=train(net, p, t);把这句改成net=train(net, p', t');试试,matlab应该默认使用列向量.或者直接使用matlab ...

  4. matlab中的神经网络怎么用,matlab如何编写神经网络

    1.matlab中神经网络怎么使用 可以直接用神经网络工具箱,GUI内设置训练的输入.目标.训练方法.迭代次数等. 谷歌人工智能写作项目:小发猫 2.matlab神经网络工具箱怎么使用训练好的神经网络 ...

  5. matlab模糊工具箱使用,MATLAB中模糊神经网络工具箱的使用 - 全文

    前些天把玩了一下MATLAB中神经网络工具箱的使用,忽有"扪参历井仰胁息"之感.别的倒是没什么,只是神经网络的数据组织结构有些"怪异",要是不小心就会导致工具箱 ...

  6. MATLAB中模糊神经网络工具箱的使用

    前些天小师妹(好吧,我向政府和人民坦白,小师妹是我虚构的)向我请教MATLAB里模糊神经网络工具箱的使用方法,说是没有搜索到好的教程.正所谓'勿以善小而不为',' 我不入地狱谁爱入谁入','天下兴亡匹 ...

  7. matlab中的神经网络怎么用,matlab神经网络训练方法

    如何利用matlab进行神经网络预测 matlab 带有神经网络工具箱,可直接调用,建议找本书看看,或者MATLAB论坛找例子. 核心调用语句如下:%数据输入%选连样本输入输出数据归一化[inputn ...

  8. bp神经网络是用来干嘛的,BP神经网络什么意思

    BP神经网络的原理的BP什么意思 人工神经网络有很多模型,但是日前应用最广.基本思想最直观.最容易被理解的是多层前馈神经网络及误差逆传播学习算法(ErrorBack-Prooaeation),简称为B ...

  9. bp神经网络图像特征提取,一文搞定bp神经网络

    本人新手,在做BP神经网络的时候遇到了一个问题 5 不知你是不是用matlab的神经网络工具箱,因为一般神经网络都是成批处理的,每一次调整都会综合所有样本的误差进行调整,而不是一类一类图片的去调整,所 ...

  10. bp神经网络是用来干嘛的,bp神经网络的应用领域

    BP神经网络是用来干嘛的阿? 用样本去训练一个BP网络,然后用新的样本作为输入,再通过这个已经训练好的BP网络,得到的数据就是仿真的结果,这就是BP网络仿真. 我们训练一个BP网络就好像是在训练一个神 ...

最新文章

  1. android跨域 元素,Android之app作为服务器解决跨域问题
  2. eclipse安装birt插件
  3. SpringBoot启动项目时提示:Error:java: 读取***.jar时出错;
  4. 【Linux】一步一步学Linux——cat/tac命令(38)
  5. [爬虫+数据分析] 分析北京Python开发的现状
  6. python批量读取csv并写入_Python如何批量读取CSV文件中指定信息并写入doc文件命名中?...
  7. html文档主体的根标签,2 HTML简介标签嵌套和并列关系文档声明
  8. 2018 开始认真学习点python
  9. hdu1861 游船出租【模拟】
  10. kotlin之高阶函数
  11. yum 命令提示语法错误
  12. inline详细讲解【C语言】
  13. 大盘点|三维视觉与自动驾驶数据集(40个)
  14. When Does Self-Supervision Help Graph Convolutional Networks?
  15. Microsoft 365独家安全解决方案
  16. [MSSQL2005]再看CTE
  17. 360手机刷机·LSPosed安装和使用教程
  18. cuteftp.exe
  19. 基于STM32的照片查看器课程报告
  20. H3C WLAN基本配置

热门文章

  1. Windows电脑怎么卸载服务/删除服务?
  2. 命名实体识别NER探索(5) Bert+BiLSTM+CRF模型实战应用
  3. 如何用OD的跟踪功能分析虚拟机保护
  4. 鞋城模板+html,西安锦绣鞋城整合营销策划方案
  5. kettle官网下载地址
  6. 用 C, C++ 读取DICOM文件
  7. Java打印杨辉三角形
  8. SCM供应链管理系统解决方案:实现供应可视化、管理信息化,成本可控化
  9. 如何用手机制作一寸或二寸证件照?
  10. 用计算机解数独,6宫格数独计算器