【发布时间】:2018-05-24 23:00:51
【问题描述】:
我想让 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) 如何在不索引每个单元格以使计算通用的情况下在这里执行此操作?
【问题讨论】:
-
使用
cellfun对单元格中的每个元素执行相同的操作,在您的情况下,这些元素是 NN,您想要做的就是使用一些参数调用它们... -
谢谢@Wolfie,我刚刚将您的评论整理成一个答案。
标签: matlab neural-network genetic-algorithm cell-array generalization