错误消息“在Matlab for Neural Net中,此赋值的右侧值太少,无法满足左侧”

时间:2017-10-10 10:27:24

标签: matlab neural-network error-messaging

您好我想用测井值估算油藏岩石中的两个岩石物理特性我在Matlab中有一些神经网络代码 (R2014b版)MLP方法。

重要的是,我使用有趣的技术确定单个隐藏层中的最佳神经元数量:在第一个指定的神经元数量为5,并且此神经元数量基于步长等于5增长到100个数量,即:5,10 ,15,...,100

现在为了确定最佳神经元数,我写了一个代码,用于绘制X轴中有神经元数和误差值的图(最后一次迭代) Y轴的培训阶段,我在下面写了这个代码:

nnn1=5;                             % First Number of Neurons in Hidden Layer
nnnj=5;                             % Jump in Number of Neurons 
nnnf=100;                           % Last Number of Neurons in Hidden Layer


% Training Network

it=25;                                             % Max Number of   Iteration
ii=0;
netopt{:}=1:nnnf;
for nnn=nnn1:nnnj:nnnf
ii=ii+1; nnn
net1=newff(p,t,[nnn nnn],{'purelin','purelin'},'traingd'); 

evalopt(ii)=10^5;

for i=1:it
    [net1,tr,y,et]=train(net1,p,t);             % Training
    net1.divideParam.trainRatio=trainRatio1;
    net1.divideParam.valRatio=valRatio1;
    net1.divideParam.testRatio=testRatio1;
    estval=sim(net1,p(:,tr.valInd)); 
    eval=mse(estval-t(:,tr.valInd));
    if  eval<evalopt(ii)
        netopt{(ii)}=net1; tropt(ii)=tr; evalopt(ii)=eval;
    end
end
end

plot(nnn1:nnnj:nnnf,evalopt)

但当我在上面代码的最后一行按“运行部分”按钮时,Matlab显示此错误消息:“此任务的右侧也有 几个值,以满足左侧“而不是绘制上面提到的图。请指导我在Matlab中修复此错误... 我在下面再次写下了我的所有代码...

clc; clear; close all
data=xlsread('sarvak_normalized.xlsx');  % Input File
corrplot(data)

input=[1:9]; % Input Layer
p=data(:,input);
output=[10:11];                        % Output Layer
t=data(:,output);
p=p'; t=t';                         % Transposing Matrices



trainRatio1=.6;
valRatio1=.2;
testRatio1=.2;


%% Network Definition

nnn1=5;                             % First Number of Neurons in Hidden  Layer
nnnj=5;                             % Jump in Number of Neurons 
nnnf=100;                           % Last Number of Neurons in Hidden Layer



% Training Network

it=25;                                             % Max Number of Iteration
ii=0;
netopt{:}=1:nnnf;
for nnn=nnn1:nnnj:nnnf
ii=ii+1; nnn
net1=newff(p,t,[nnn nnn],{'purelin','purelin'},'traingd'); 

evalopt(ii)=10^5;

for i=1:it
    [net1,tr,y,et]=train(net1,p,t);             % Training
    net1.divideParam.trainRatio=trainRatio1;
    net1.divideParam.valRatio=valRatio1;
    net1.divideParam.testRatio=testRatio1;
    estval=sim(net1,p(:,tr.valInd)); 
    eval=mse(estval-t(:,tr.valInd));
    if  eval<evalopt(ii)
        netopt{(ii)}=net1; tropt(ii)=tr; evalopt(ii)=eval;
    end
end
end

plot(nnn1:nnnj:nnnf,evalopt)


nn=2

ptrain=p(:,tropt(nn).trainInd);     ttrain=t(:,tropt(nn).trainInd);      esttrain=sim(netopt{nn},ptrain);
ptest=p(:,tropt(nn).testInd);       ttest=t(:,tropt(nn).testInd);        esttest=sim(netopt{nn},ptest);
pval=p(:,tropt(nn).valInd);         tval=t(:,tropt(nn).valInd);          estval=sim(netopt{nn},pval);
estwhole=sim(netopt{nn},p);



plotregression(ttrain,esttrain,'Train',tval,estval,'Validation',...
ttest,esttest,'Test',t,estwhole,'Whole Data');

当我在最后一行完整代码中按“运行部分”按钮时也会出现相同的错误信息; “plotregression ...”了解模型准确度3 神经网络过程的阶段。

OfCourse有时Matlab绘制回归图但显示“plot(nnn1:nnnj:nnnf,evalopt)”的错误消息,反之亦然,有时不绘制任何图形。谢谢......

0 个答案:

没有答案