我正在训练一个ANN,我想有不同的训练实例。在每个实例中,我都想找到实际输出和预测输出之间的最大差异。然后我想取所有这些最大值的平均值。
到目前为止,我的代码是:
maximum = [];
k=1;
for k = 1:5
%Train network
layers = [ ...
imageInputLayer([250 1 1])
reluLayer
fullyConnectedLayer(100)
fullyConnectedLayer(100)
fullyConnectedLayer(1)
regressionLayer];
options = trainingOptions('sgdm','InitialLearnRate',0.1, ...
'MaxEpochs',1000);
net = trainNetwork(nnntrain,nnnfluidtrain,layers,options);
net.Layers
%Test network
predictedn = predict(net,nnntest);
maximum = append(maximum, max(abs(predictedn-nnnfluidtest)));
k=k+1
end
我的目的是生成一个名为"maximum"的列表,其中包含五个元素(每个ANN训练实例的最大值(,然后我想取平均值。
但是,它一直给我错误:
wrong number of input arguments for obsolete matrix-based syntax
当它尝试追加时。第一个输入是列表,而第二个是 1x1 单曲。
在 MATLAB 中追加是一种本机操作。 您可以通过实际构建一个新向量来附加元素,其中原始向量是输入的一部分。
因此:
maximum = [maximum max(abs(predictedn-nnnfluidtest))];
如果出于某种原因您想以函数形式执行此操作,那么您正在寻找的功能是 cat
这是 concatenate 的缩写形式。 append
函数显示在多个工具箱中,但每个工具箱都不能满足您的需求。 cat
是您想要的,但您仍然需要提供原始输入向量作为参数的一部分:
maximum = cat(2, maximum, max(abs(predictedn-nnnfluidtest)));
第一个参数是要追加到的轴。 为了尊重您上面执行的代码,您希望列在扩展向量时增加,以便第二个轴,或轴为 2。