%% II. 声明全局变量

global P_train     % 训练集输入数据

global T_train     % 训练集输出数据

global R     % 输入神经元个数

global S2    % 输出神经元个数

global S1    % 隐层神经元个数

global S     % 编码长度

S1 =7;

%% 训练集/测试集产生

input=xlsread('input.xlsx');

output=xlsread('output.xlsx');

% 随机产生训练集和测试集

temp = randperm(size(input,1));

% 训练集——25个样本

P_train = input(temp(1:28),:)';

T_train = output(temp(1:28),:)';

% 测试集——5个样本

P_test =input((28:end),:)';

T_test = output((28:end),:)';

N = size(P_test,2);

%% III. 数据归一化

[p_train, ps_input] = mapminmax(P_train,0.2,0.8);

p_test = mapminmax('apply',P_test,ps_input);

[t_train, ps_output] = mapminmax(T_train,0.2,0.8);

%% IV. BP神经网络创建、训练及仿真测试

%%

% 1. 创建网络

net = newff(p_train,t_train,[S1],{'logsig','purelin'},'trainlm');

%%

% 2. 设置训练参数

net.trainParam.epochs = 50;

net.trainParam.goal =0.1;

net.trainParam.lr = 0.06;

%%

% 3. 训练网络

net = train(net,p_train,t_train);

%%

% 4. 仿真测试

t_sim = sim(net,p_test);

%

T_sim = mapminmax('reverse',t_sim,ps_output);

error = abs(T_sim - T_test)./T_test;

%% V. GA-BP神经网络

R = size(p_train,1);

S2 = size(t_train,1);

S = R*S1 + S1*S2 + S1 + S2;

aa = ones(S,1)*[-1,1];

%% VI. 遗传算法优化

%%

% 1. 初始化种群

popu = 50;  % 种群规模

initPpp = initializega(popu,aa,'gabpEval',[],[1e-6 1]);  % 初始化种群

%%

% 2. 迭代优化

gen = 100;  % 遗传代数

% 调用GAOT工具箱,其中目标函数定义为gabpEval

[x,endPop,bPop,trace] = gaot(aa,'gabpEval',[],initPpp,[1e-6 1 1],'maxGenTerm',gen,...

'normGeomSelect',0.09,'arithXover',2,'nonUnifMutation',[2 gen 3]);

%%

% 3. 绘均方误差变化曲线

figure(1)

plot(trace(:,1),1./trace(:,3),'r-');

title( 'GA优化BP神经网络,绘制均方误差变化曲线—Jason niu')

hold on

plot(trace(:,1),1./trace(:,2),'b-');

xlabel('Generation');

ylabel('Sum-Squared Error');

%%

% 4. 绘制适应度函数变化

figure(2)

plot(trace(:,1),trace(:,3),'r-');

title( 'GA优化BP神经网络,绘制适应度函数变化曲线—Jason niu')

hold on

plot(trace(:,1),trace(:,2),'b-');

xlabel('Generation');

ylabel('Fittness');

%% VII. 解码最优解并赋值

%%

% 1. 解码最优解

[W1,B1,W2,B2,val] = gadecod(x);

inputnum=size(P_train,1);       % 输入层神经元个数

outputnum=size(T_train,1);      % 输出层神经元个数

w1num=R*S1; % 输入层到隐层的权值个数

w2num=S2*S1;% 隐层到输出层的权值个数

N=w1num+S1+w2num+outputnum; %待优化的变量的个数

%%

% 2. 赋值给神经网络

w1=x(1:R*S1);

B1=x(R*S1+1:R*S1+S1);

w2=x(R*S1+S1+1:R*S1+S1+S1*S2);

B2=x(R*S1+S1+S1*S2+1:R*S1+S1+S1*S2+S2);

net.iw{1,1}=reshape(w1,S1,R);

net.lw{2,1}=reshape(w2,S2,S1);

net.b{1}=reshape(B1,S1,1);

net.b{2}=B2;

%% VIII. 利用新的权值和阈值进行训练

net = train(net,p_train,t_train);

%% IX. 仿真测试

s_ga = sim(net,P_test)    %遗传优化后的仿真结果

T_sim = mapminmax('reverse',s_ga,ps_output);%%

% 1. 相对误差error

error = abs(T_sim - T_test)./T_test;

%%

% 2. 决定系数R^2

R2 = (N * sum(T_sim .* T_test) - sum(T_sim) * sum(T_test))^2 / ((N * sum((T_sim).^2) - (sum(T_sim))^2) * (N * sum((T_test).^2) - (sum(T_test))^2));

%%

% 3. 结果对比

result = [T_test' T_sim' error'];

2020-3-27 15:15 上传

2020-3-27 15:15 上传

matlab神经网络训练结果误差很大,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...相关推荐

  1. MATLAB神经网络样本数量太大,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...

    %% II. 声明全局变量 global P_train     % 训练集输入数据 global T_train     % 训练集输出数据 global R     % 输入神经元个数 globa ...

  2. matlab 神经网络train均方误差,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...

    %% II. 声明全局变量 global P_train     % 训练集输入数据 global T_train     % 训练集输出数据 global R     % 输入神经元个数 globa ...

  3. 《MATLAB神经网络案例分析》学习(一)——BP神经网络基本理论

    一.BP神经网络理论基本介绍 BP(Back Propagation)是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需 ...

  4. 【Matlab风电功率预测】粒子群算法优化BP神经网络风电功率预测【含源码 347期】

    一.代码运行视频(哔哩哔哩) [Matlab风电功率预测]粒子群算法优化BP神经网络风电功率预测[含源码 347期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [ ...

  5. 搭建BP神经网络(完整代码快速上手)

    搭建BP神经网络 具体思想:随机权重-向前计算--------误差-------权重更新----再来一遍-------达到误差限-----停止 1.搭建步骤 步骤编号 具体内容 1 读取数据 2 设置 ...

  6. Python学习记录 搭建BP神经网络实现手写数字识别

    搭建BP神经网络实现手写数字识别 通过之前的文章我们知道了,构建一个简单的神经网络需要以下步骤 准备数据 初始化假设 输入神经网络进行计算 输出运行结果 这次,我们来通过sklearn的手写数字数据集 ...

  7. Matlab中newff函数使用方法和搭建BP神经网络的方法

    1. newff()函数使用方法 net = newff(data,label,[8,8],{'tansig','purelin'},'trainlm') (1)输入参数详细介绍: data:训练时网 ...

  8. MATLAB:海洋捕食者算法(MPA)优化BP神经网络权值和阈值用于月径流预测

    海洋捕食者算法(Marine Predators Algorithm,MPA)是Afshin Faramarzi等人于2020年提出的一种新型元启发式优化算法,其灵感来源于海洋"适者生存&q ...

  9. BP神经网络的基本思想,一文搞定bp神经网络

    自学bp神经网络要有什么基础?? . 简介:BP(BackPropagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络 ...

最新文章

  1. 虚拟机环境下Centos7操作系统的详细安装教程
  2. android电视视频app下载,央视频APP智能电视版下载-央视频电视版客户端 1.9.0.53139 安卓版-玩友游戏网...
  3. oracle imp使用
  4. Windows下的反弹shell
  5. 图解算法学习笔记(六):广度优先搜索
  6. php请求来源,php验证请求页面来源
  7. java企业人事管理系统源码_企业人事管理系统完美版源代码 - 源码下载|行业应用软件|企业管理(财务/ERP/EIP等)|源代码 - 源码中国...
  8. 一晚浓浓的程序员鸡汤,先干为敬
  9. 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
  10. 进价移动加权核算体系
  11. Linux文件打包tar
  12. 匈牙利算法(指派问题)
  13. unity 彩带粒子_Unity 粒子特效—FX Maker
  14. 计算机学院研发------考核之界面
  15. 数独解法-变形数独(第三讲:数独进阶方法(摒除))
  16. 【爬虫】Web Scraper正则表达式
  17. 外企office电话英语
  18. android功能机,诺基亚正式发布了4款安卓智能手机和一款能上网的功能机
  19. python下载某网站收费文档(一)——配合fiddler半自动版
  20. 【Android】技术调研:用代码模拟屏幕点击、触摸事件

热门文章

  1. 数字化智能工厂 工业4.0智能制造 MES服务商珠海先达智控
  2. GNU Radio及软件无线电USRP N210安装说明
  3. 济南的老城门(附图)
  4. centOs6.5版Linux系统中搭建Samba服务(附搭建Samba设置及相关配置参考)
  5. JAVA基于SpringBoot的疫情防控核酸检查管理系统【数据库设计、论文、源码、开题报告】
  6. 2022年这样高颜值高内涵的智慧工地系统,你觉得需要多少一套
  7. IOS:Warning: Attempt to dismiss from view controller xxxxxxxxxController: 0x13f6840e0
  8. mysql2008 精简版_SQL Server下载 2008 SP2 中文精简版_最火软件站
  9. Java对于字符串的处理【String和int之间的转换、字符串拼接、字符串获取长度、字符串大小写转换、字符串去空格、字符串分割、字符串替换、字符串提取、字符串比较、字符串查找】
  10. MNIST和SVHN数据集配对