matlab神经网络训练结果误差很大,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...
%% 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的值也大,求解帮我看看我的网络哪里出问题了...相关推荐
- MATLAB神经网络样本数量太大,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...
%% II. 声明全局变量 global P_train % 训练集输入数据 global T_train % 训练集输出数据 global R % 输入神经元个数 globa ...
- matlab 神经网络train均方误差,MATLAB搭建bp神经网络的误差特别大,但R2的值也大,求解帮我看看我的网络哪里出问题了...
%% II. 声明全局变量 global P_train % 训练集输入数据 global T_train % 训练集输出数据 global R % 输入神经元个数 globa ...
- 《MATLAB神经网络案例分析》学习(一)——BP神经网络基本理论
一.BP神经网络理论基本介绍 BP(Back Propagation)是一种按误差逆传播算法训练的多层前馈网络,是应用最广泛的神经网络模型之一.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需 ...
- 【Matlab风电功率预测】粒子群算法优化BP神经网络风电功率预测【含源码 347期】
一.代码运行视频(哔哩哔哩) [Matlab风电功率预测]粒子群算法优化BP神经网络风电功率预测[含源码 347期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [ ...
- 搭建BP神经网络(完整代码快速上手)
搭建BP神经网络 具体思想:随机权重-向前计算--------误差-------权重更新----再来一遍-------达到误差限-----停止 1.搭建步骤 步骤编号 具体内容 1 读取数据 2 设置 ...
- Python学习记录 搭建BP神经网络实现手写数字识别
搭建BP神经网络实现手写数字识别 通过之前的文章我们知道了,构建一个简单的神经网络需要以下步骤 准备数据 初始化假设 输入神经网络进行计算 输出运行结果 这次,我们来通过sklearn的手写数字数据集 ...
- Matlab中newff函数使用方法和搭建BP神经网络的方法
1. newff()函数使用方法 net = newff(data,label,[8,8],{'tansig','purelin'},'trainlm') (1)输入参数详细介绍: data:训练时网 ...
- MATLAB:海洋捕食者算法(MPA)优化BP神经网络权值和阈值用于月径流预测
海洋捕食者算法(Marine Predators Algorithm,MPA)是Afshin Faramarzi等人于2020年提出的一种新型元启发式优化算法,其灵感来源于海洋"适者生存&q ...
- BP神经网络的基本思想,一文搞定bp神经网络
自学bp神经网络要有什么基础?? . 简介:BP(BackPropagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络 ...
最新文章
- 虚拟机环境下Centos7操作系统的详细安装教程
- android电视视频app下载,央视频APP智能电视版下载-央视频电视版客户端 1.9.0.53139 安卓版-玩友游戏网...
- oracle imp使用
- Windows下的反弹shell
- 图解算法学习笔记(六):广度优先搜索
- php请求来源,php验证请求页面来源
- java企业人事管理系统源码_企业人事管理系统完美版源代码 - 源码下载|行业应用软件|企业管理(财务/ERP/EIP等)|源代码 - 源码中国...
- 一晚浓浓的程序员鸡汤,先干为敬
- 浅谈linux中shell变量$#,$@,$0,$1,$2,$?的含义解释
- 进价移动加权核算体系
- Linux文件打包tar
- 匈牙利算法(指派问题)
- unity 彩带粒子_Unity 粒子特效—FX Maker
- 计算机学院研发------考核之界面
- 数独解法-变形数独(第三讲:数独进阶方法(摒除))
- 【爬虫】Web Scraper正则表达式
- 外企office电话英语
- android功能机,诺基亚正式发布了4款安卓智能手机和一款能上网的功能机
- python下载某网站收费文档(一)——配合fiddler半自动版
- 【Android】技术调研:用代码模拟屏幕点击、触摸事件
热门文章
- 数字化智能工厂 工业4.0智能制造 MES服务商珠海先达智控
- GNU Radio及软件无线电USRP N210安装说明
- 济南的老城门(附图)
- centOs6.5版Linux系统中搭建Samba服务(附搭建Samba设置及相关配置参考)
- JAVA基于SpringBoot的疫情防控核酸检查管理系统【数据库设计、论文、源码、开题报告】
- 2022年这样高颜值高内涵的智慧工地系统,你觉得需要多少一套
- IOS:Warning: Attempt to dismiss from view controller xxxxxxxxxController: 0x13f6840e0
- mysql2008 精简版_SQL Server下载 2008 SP2 中文精简版_最火软件站
- Java对于字符串的处理【String和int之间的转换、字符串拼接、字符串获取长度、字符串大小写转换、字符串去空格、字符串分割、字符串替换、字符串提取、字符串比较、字符串查找】
- MNIST和SVHN数据集配对