查看: 2419|回复: 4|关注: 0

[已答复] Bp神经网络这边显示错误使用 vertcat 串联的矩阵的维度不一...

[复制链接]

新手

11 麦片

财富积分


050


5

主题

9

帖子

0

最佳答案
  • 关注者: 2
发表于 2018-9-3 16:04:50 | 显示全部楼层 |阅读模式
%BP神经网络matlab源程序代码)
%******************************%

          %学习程序

%******************************%
%======原始数据输入========
p=[602.55        17.928        34.176;
477.28        17.692        33.465;
741.36        17.481        32.762;
867.96        17.274        32.107;
418.54        17.069        31.498;
491.07        16.857        30.882;
444.41        16.621        30.626;
281.32        16.333        29.791;
18.95        16.044        29.279;
18.96        15.754        28.767;
18.11        15.499        28.932;
15.95        15.143        29.096;
13.95        14.834        29.191;
12.32        14.521        29.164;
11.08        14.208        29.14;
10.64        13.895        29.115;
11.15        14.703        28.986;
12.115        14.634        28.845;
12.273        14.982        28.8;
11.16        15.026        28.641;
9.264        15.142        28.553;
8.486        15.163        28.434;
11.812        14.848        27.959;
12.891        14.884        28.261;
12.950        14.417        28.169;
13.346        13,606        28.088;
13.014        12.794        28.006;
12.552        12.305        27.913;
11.399        12.382        27.802;
9.936        12.459        27.812]';  

%===========期望输出=======
t=[-2.2        -19.9        -2.4        -4.5        -5.8        -7.1        -8.4        -8.7        -19.1        -24.8        -35.3        -37.5        -39.7        -38.4        -33.8        -41.8        -61.2        -82.3        -79.5        -66.3        -62.3        -60.3        -79.6        -91.5        -73.3        -62.4        -64.5        -63.3        -53.7        -39.2];

ptest=[602.5550942        17.928        34.176;
477.2819543        17.692        33.465;
741.3630517        17.481        32.762;
867.9604635        17.274        32.107;
418.5468157        17.069        31.498;
491.0740172        16.857        30.882;
444.4118886        16.621        30.626;
281.3236548        16.333        29.791;
18.95469449        16.044        29.279;
18.96976397        15.754        28.767;
18.11926586        15.499        28.932;
15.95252612        15.143        29.096;
13.95948066        14.834        29.191;
12.32457139        14.521        29.164;
11.08639671        14.208        29.14;
10.64375751        13.895        29.115;
11.15985993        14.703        28.986;
12.11298665        14.634        28.845;
12.27345486        14.982        28.8;
11.16889075        15.026        28.641;
9.264809302        15.142        28.553;
8.48643877        15.163        28.434;
11.81292607        14.848        27.959;
12.89134142        14.884        28.261;
12.95090348        14.417        28.169;
13.34628667        13,606        28.088;
13.01487538        12.794        28.006;
12.55220507        12.305        27.913;
11.39955759        12.382        27.802;
9.934808716        12.459        27.812; ]';


[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);  %将数据归一化


NodeNum1 =30; % 隐层第一层节点数
NodeNum2=30;   % 隐层第二层节点数

TypeNum = 1;   % 输出维数  
TF1 = 'tansig';
TF2 = 'tansig';
TF3 = 'tansig';
net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');
%网络创建traingdm
net.trainParam.show=50;
net.trainParam.epochs=50000; %训练次数设置
net.trainParam.goal=1e-5; %训练所要达到的精度
net.trainParam.lr=0.01;   %学习速率      
net=train(net,pn,tn);



p2n=tramnmx(ptest,minp,maxp);%测试数据的归一化
an=sim(net,p2n);

[a]=postmnmx(an,mint,maxt)   %数据的反归一化 ,即最终想得到的预测结果
这边显示错误使用 vertcat
串联的矩阵的维度不一致。
求大神帮忙

回复主题 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

130 麦片

财富积分


50500


6

主题

131

帖子

23

最佳答案
  • 关注者: 4
发表于 2018-9-3 16:56:35 | 显示全部楼层
矩阵p和矩阵ptest倒数第五行:
13,606 改为  13.606
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


5

主题

9

帖子

0

最佳答案
  • 关注者: 2
 楼主| 发表于 2018-9-3 17:09:45 | 显示全部楼层
leavor 发表于 2018-9-3 16:56
矩阵p和矩阵ptest倒数第五行:
13,606 改为  13.606

解决拉,谢谢拉
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

130 麦片

财富积分


50500


6

主题

131

帖子

23

最佳答案
  • 关注者: 4
发表于 2018-9-3 17:40:59 | 显示全部楼层
本帖最后由 leavor 于 2018-9-3 17:56 编辑

程序改成下面的试试,可以去掉提示的警告,样本较少隐层的节点数不需要那么多

clc
clear
close all

%======原始数据输入========
p=[602.55        17.928        34.176;
477.28        17.692        33.465;
741.36        17.481        32.762;
867.96        17.274        32.107;
418.54        17.069        31.498;
491.07        16.857        30.882;
444.41        16.621        30.626;
281.32        16.333        29.791;
18.95        16.044        29.279;
18.96        15.754        28.767;
18.11        15.499        28.932;
15.95        15.143        29.096;
13.95        14.834        29.191;
12.32        14.521        29.164;
11.08        14.208        29.14;
10.64        13.895        29.115;
11.15        14.703        28.986;
12.115        14.634        28.845;
12.273        14.982        28.8;
11.16        15.026        28.641;
9.264        15.142        28.553;
8.486        15.163        28.434;
11.812        14.848        27.959;
12.891        14.884        28.261;
12.950        14.417        28.169;
13.346        13.606        28.088;
13.014        12.794        28.006;
12.552        12.305        27.913;
11.399        12.382        27.802;
9.936        12.459        27.812]';  

%===========期望输出=======
t=[-2.2        -19.9        -2.4        -4.5        -5.8        -7.1        -8.4        -8.7        -19.1        -24.8        -35.3        -37.5        -39.7        -38.4        -33.8        -41.8        -61.2        -82.3        -79.5        -66.3        -62.3        -60.3        -79.6        -91.5        -73.3        -62.4        -64.5        -63.3        -53.7        -39.2];

ptest=[602.5550942        17.928        34.176;
477.2819543        17.692        33.465;
741.3630517        17.481        32.762;
867.9604635        17.274        32.107;
418.5468157        17.069        31.498;
491.0740172        16.857        30.882;
444.4118886        16.621        30.626;
281.3236548        16.333        29.791;
18.95469449        16.044        29.279;
18.96976397        15.754        28.767;
18.11926586        15.499        28.932;
15.95252612        15.143        29.096;
13.95948066        14.834        29.191;
12.32457139        14.521        29.164;
11.08639671        14.208        29.14;
10.64375751        13.895        29.115;
11.15985993        14.703        28.986;
12.11298665        14.634        28.845;
12.27345486        14.982        28.8;
11.16889075        15.026        28.641;
9.264809302        15.142        28.553;
8.48643877        15.163        28.434;
11.81292607        14.848        27.959;
12.89134142        14.884        28.261;
12.95090348        14.417        28.169;
13.34628667        13.606        28.088;
13.01487538        12.794        28.006;
12.55220507        12.305        27.913;
11.39955759        12.382        27.802;
9.934808716        12.459        27.812; ]';


%[pn,minp,maxp,tn,mint,maxt]=premnmx(p,t);  %将数据归一化
[pn,ps_train_in] = mapminmax(p);%训练输入数据归一化
[tn,ps_train_out] = mapminmax(t);%训练输出数据归一化
% NodeNum1 =30; % 隐层第一层节点数
% NodeNum2=30;   % 隐层第二层节点数

NodeNum1 =10; % 隐层第一层节点数
NodeNum2=10;   % 隐层第二层节点数

TypeNum = 1;   % 输出维数  
TF1 = 'tansig';
TF2 = 'tansig';
TF3 = 'tansig';
%net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'traingdx');
net=newff(minmax(pn),[NodeNum1,NodeNum2,TypeNum],{TF1 TF2 TF3},'trainlm');%老版newff
% net=newff(pn,tn,[NodeNum1,NodeNum2],{'tansig','tansig','tansig'},'trainlm');%新版newff,但是会出现vc值达到已设置的最大值停止训练,而p值还没有达到

%网络创建traingdm
net.trainParam.show=50;
net.trainParam.epochs=50000; %训练次数设置
net.trainParam.goal=1e-5; %训练所要达到的精度
net.trainParam.lr=0.01;   %学习速率      
net=train(net,pn,tn);

%p2n=tramnmx(ptest,minp,maxp);%测试数据的归一化
p2n= mapminmax('apply',ptest,ps_train_in);%测试输入数据归一化
   
an=sim(net,p2n);

%[a]=postmnmx(an,mint,maxt)   %数据的反归一化 ,即最终想得到的预测结果
a = mapminmax('reverse',an,ps_train_out);%测试输出数据反归一化
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


5

主题

9

帖子

0

最佳答案
  • 关注者: 2
 楼主| 发表于 2018-9-21 11:11:59 | 显示全部楼层
leavor 发表于 2018-9-3 17:40
程序改成下面的试试,可以去掉提示的警告,样本较少隐层的节点数不需要那么多

clc

好的,谢谢大神指导
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表