我正在训练一个人工神经网络,我想要有不同的训练实例。在每种情况下,我想找到实际输出和预测输出之间的最大差异。然后我想取所有这些最大值的平均值。
到目前为止我的代码是:
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
我的目的是生成一个名为“最大值”的列表,其中包含五个元素(每个 ANN 训练实例的最大值),然后我想对其求平均值。
但是,它一直给我错误:
wrong number of input arguments for obsolete matrix-based syntax
当它尝试追加时。第一个输入是列表,第二个输入是 1x1 单个输入。
最佳答案
追加在 MATLAB 中是一种 native 操作。您可以通过实际构建一个新向量来附加元素,其中原始向量是输入的一部分。
因此:
maximum = [maximum max(abs(predictedn-nnnfluidtest))];
如果出于某种原因您想以函数形式执行此操作,您正在寻找的函数是 cat
这是 conectcatenate 的缩写形式。 append
函数在多个工具箱中都可以看到,但每个工具箱都不能执行您想要的操作。 cat
是您想要的,但您仍然需要提供原始输入向量作为参数的一部分:
maximum = cat(2, maximum, max(abs(predictedn-nnnfluidtest)));
第一个参数是要附加到的轴。为了尊重您在上面执行的代码,您希望列随着您扩展向量而增加,以便成为第二个轴,或者轴为 2。
关于matlab - 为 MATLAB 追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49761988/