具体错误代码:??? Error using ==> trainlm at 109
Inputs and targets have different numbers of samples.
Error in ==> network.train at 107
[net,tr] = feval_r(net.trainFcn,net,X,T,Xi,Ai,EW,net.trainParam);
Error in ==> BP at 14
net=train(net,X,D);
原文代码:
% p_train=A(:,1:2)';t_train=A(:,3)';
% [p_train,ps] = mapminmax(p_train,0,1);
% [t_train,ts] = mapminmax(t_train,0,1);
%
net=newff(minmax(p_train),[22,1],{'purelin','purelin'},'traingd');
X =data3_2(:,1:13)';
D =data3_2(:,14);
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];
figure;
plot(X,D,'*'); %绘制原始数据分布图
net =newff(threshold,[14 1],{'tansig','logsig'},'trainlm')
net.trainParam.epochs = 1000;
net.trainParam.goal=0.001;
Lp.lr=0.1;
net=train(net,X,D);
O=sim(net,X);
figure;
plot(X,D,'*',X,O); %绘制训练后得到的结果和误差曲线(附录:2-2、2-3)
V = net.iw{1,1}%输入层到中间层权值
theta1 = net.b{1}%中间层各神经元阈值
W = net.lw{2,1}%中间层到输出层权值
theta2 = net.b{2}%输出层各神经元阈值
错在输入输出不匹配,输入转置后变成13*19
输出不转置是19*1,所以提示错误,如果输入不转置对于BP网络而言一列代表一个输入,一列也代表一个输出,所以把输出D后面加一个转置即可,D
=data3_2(:,14)';