您好我想用测井值估算油藏岩石中的两个岩石物理特性我在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)”的错误消息,反之亦然,有时不绘制任何图形。谢谢......