我想让 N 个并行神经网络使用相同的输入参数并排工作。所以我决定先从 2 个神经网络开始,在下一轮推广到 N。
为此,我创建了一个函数getUntrainedNet
,如下所示:
function [net] = getUntrainedNet()
%GETUNTRAINEDNET Summary of this function goes here
% Detailed explanation goes here
% Choose a Training Function
% For a list of all training functions type: help nntrain
% 'trainlm' is usually fastest.
% 'trainbr' takes longer but may be better for challenging problems.
% 'trainscg' uses less memory. Suitable in low memory situations.
trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation.
% Create a Fitting Network
hiddenLayerSize = 30;
net = fitnet(hiddenLayerSize,trainFcn);
end
接下来我创建了一个nets
神经网络对象的元胞数组:
nets = cell(1,lengthTargets);
nets(:) = {getUntrainedNet()};
lengthTargets
来自哪里:
Targets = [experiments.TargetOne; experiments.TargetTwo];
lengthTargets = size(Targets,1);
然后用以下方法训练神经网络:
nets{k} = trainNet(nets{k}, experimentCoordinates, Targets(k,:));
为了使用称为 的多目标优化方法检测最佳操作点gamultiobj
,我使用以下成本函数:
costFunction = @(varargin) [nets{1}(varargin{:}'), nets{2}(varargin{:}')];
但相反,我想将varargin{:}'
参数应用于单元阵列中存在的所有神经网络对象,而不必通过其索引器指定每个网络以使计算通用。
1)如何在这里做到这一点?
获得最佳坐标后,我想将最佳坐标的参数应用于元胞数组中的每个神经网络对象。
目前正在通过以下方式完成:
bestCoordinatesTargetOne = nets{1}(bestCoordinates);
bestCoordinatesTargetTwo = nets{2}(bestCoordinates);
2)如何在不索引每个单元格以使计算通用的情况下在这里执行此操作?