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

[已解决] 跪求大神,错误使用 network/train (line 323) Output data size does not match net.outputs{2}.size. 出错 BP1 (line 43) net=train(net,P,T);怎么解决?具体代码如下

[复制链接]

新手

12 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
clear;
clc;
%输入矢量P(9*25)
P=[89.94 92.87 92.71 88.32 87.69 88.16 92.14 91.72  92.62 90.36 93.86 98.11 91.83 98.52 101.00 100.00 97.36 102.70 106.34 92.66 89.18 85.81 86.63 86.24 0;
   89.90 89.68 87.74 87.80 85.30 85.35 88.84 92.58 100.53 97.14 98.77 102.06 87.06 94.89 101.77 102.33 102.10 104.60 100.10 95.12 90.87 87.12 91.13 91.91 0;
   93.30 98.82 96.84 92.26 91.40 89.42 94.83 98.01 103.78 95.99 96.98 98.99 94.58 98.10 104.68 105.91 108.37 112.29 106.56 97.93 91.82 88.37 91.04 92.81 0;
   92.13 98.83 96.77 93.23 93.91 93.29 97.42 99.46 98.34 96.40 95.59 96.01 94.98 98.04 103.21 106.51 106.19 108.87 100.67 93.25 90.32 86.01 86.29 84.31 0;
   84.24 88.50 84.20 82.36 81.94 81.96  82.26 82.58 79.91 70.09 69.50 76.33 66.68 66.17 62.31 65.20 70.84 75.59 73.81 66.80 65.93 63.86 62.04 60.08 0;
   65.00 69.62 67.99 65.83 66.08 65.51 66.41 71.71 77.34 77.75 79.89 86.83 73.52 75.57 75.96 76.96 84.23 89.39 87.17 79.93 75.74 72.13 73.71 72.40 1;
   73.27 78.52 75.92 71.29 72.34 74.58 80.64 83.20 86.15 76.93 78.36 89.74 75.36 80.95 85.13 88.95 90.78 89.57 87.72 78.75 72.17 71.91 70.50 74.45 1;
   70.25 77.65 74.48 74.34 72.57 72.90 81.27 84.41 80.69 80.94 81.44 90.97 78.58 81.60 86.88 91.53 95.06 100.29 98.99 88.68 85.77 83.24 85.16 83.20 0;
   83.15 89.13 83.03 84.64 83.74 84.18 89.71 91.87 96.13 93.28 93.91 96.55 89.08 93.39 99.11 100.26 101.31 104.60 100.05 95.55 91.32 89.02 85.18 91.99 0]';

%目标矢量T(9*25)
T=[89.90 89.68 87.74 87.80 85.30 85.35 88.84 92.58 100.53 97.14 98.77 102.06 87.06 94.89 101.77 102.33 102.10 104.60 100.10 95.12 90.87 87.12 91.13 91.91 0;
   93.30 98.82 96.84 92.26 91.40 89.42 94.83 98.01 103.78 95.99 96.98 98.99 94.58 98.10 104.68 105.91 108.37 112.29 106.56 97.93 91.82 88.37 91.04 92.81 0;
   92.13 98.83 96.77 93.23 93.91 93.29 97.42 99.46 98.34 96.40 95.59 96.01 94.98 98.04 103.21 106.51 106.19 108.87 100.67 93.25 90.32 86.01 86.29 84.31 0;
   84.24 88.50 84.20 82.36 81.94 81.96  82.26 82.58 79.91 70.09 69.50 76.33 66.68 66.17 62.31 65.20 70.84 75.59 73.81 66.80 65.93 63.86 62.04 60.08 0;
   65.00 69.62 67.99 65.83 66.08 65.51 66.41 71.71 77.34 77.75 79.89 86.83 73.52 75.57 75.96 76.96 84.23 89.39 87.17 79.93 75.74 72.13 73.71 72.40 1;
   73.27 78.52 75.92 71.29 72.34 74.58 80.64 83.20 86.15 76.93 78.36 89.74 75.36 80.95 85.13 88.95 90.78 89.57 87.72 78.75 72.17 71.91 70.50 74.45 1;
   70.25 77.65 74.48 74.34 72.57 72.90 81.27 84.41 80.69 80.94 81.44 90.97 78.58 81.60 86.88 91.53 95.06 100.29 98.99 88.68 85.77 83.24 85.16 83.20 0;
   83.15 89.13 83.03 84.64 83.74 84.18 89.71 91.87 96.13 93.28 93.91 96.55 89.08 93.39 99.11 100.26 101.31 104.60 100.05 95.55 91.32 89.02 85.18 91.99 0;
   88.30 94.30 91.17 88.98 90.99 90.40 93.69 92.72 93.00 93.31 93.14 96.95 87.45 92.52 100.39 100.35 104.58 104.81 100.69 93.67 88.44 88.35 81.07 85.44 0]';
%归一化
[Pn,meanP,stdP,Tn,meanT,stdT] =prestd(P,T);
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];

%创建一个新的BP前向神经网络
%newff—生成一个新的BP前向神经网络
net=newff(threshold,[50,24],{'tansig','logsig'},'traingd');



%设置训练参数

net.trainParam.lr=0.5;        %学习速率(0.01-0.8)
net.trainParam.mc=0.9;         %动量因子
net.trainParam.show=10;
net.trainParam.epochs=1000;    %训练的代数
net.trainParam.goal=0.001;    %目标误差
%训练BP前向神经网络
%P为输入向量,T为目标向量
net=train(net,P,T);

%仿真
%T1:31日实际负荷;P1:30日负荷+31日气象特征;A1:31日预测负荷
P1=[83.15 89.13 83.03 84.64 83.74 84.18 89.71 91.87 96.13 93.28 93.91 96.55 89.08 93.39 99.11 100.26 101.31 104.60 100.05 95.55 91.32 89.02 85.18 91.99 0]';
T1=[88.30 94.30 91.17 88.98 90.99 90.40 93.69 92.72 93.00 93.31 93.14 96.95 87.45 92.52 100.39 100.35 104.58 104.81 100.69 93.67 88.44 88.35 81.07 85.44 ]';

PN=sim(net,P1) ;
x=1:1:24;
A1= poststd(PN,meanT,stdT);
figure,plot(x,T1,'r',x,A1,'b');
title('31日负荷预测与实际比较曲线,');
legend('实际负荷情况','预测负荷情况');
%计算仿真误差
E=T1-A1;
%计算误差平方和
SSE=sse(E);
figure,plot(x,E);
title('误差曲线');

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

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-5-29 16:49:04 | 显示全部楼层
  1. net=newff(threshold,[50,24],{'tansig','logsig'},'traingd');
复制代码

改为
  1. net=newff(threshold,[50,25],{'tansig','logsig'},'traingd');
复制代码
试试
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-5-29 17:05:10 | 显示全部楼层

你好,改了可以运行,这个代码是网上找的,本身可能还存在一些问题。但我想要输出24需要怎么改的网络。
错误使用 plot
矢量长度必须相同。
出错 BP1 (line 53)
figure,plot(x,T1,'r',x,A1,'b');
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

307

最佳答案
  • 关注者: 70
发表于 2020-5-29 17:07:38 | 显示全部楼层 |此回复为最佳答案
那你样本对应输出需要为24
回复此楼 已获打赏: 0 积分

举报

新手

12 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-5-29 18:33:36 | 显示全部楼层
20141303 发表于 2020-5-29 17:07
那你样本对应输出需要为24

感谢,:handshake
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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