0

同じ入力パラメータでN個の並列ニューラルネットワークを並べて動作させたいと思います。だから私は最初にN次のラウンドに一般化するために2つのニューラルネットワークから始めることを決めた。セル配列内のすべてのニューラルネットワークオブジェクトに引数を適用する方法

nets = cell(1,lengthTargets); 
nets(:) = {getUntrainedNet()}; 

lengthTargetsはから来ている:

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を作成し、次のよう

これを行うために、私はgetUntrainedNetと呼ばれる関数を作成しました

Targets = [experiments.TargetOne; experiments.TargetTwo]; 
lengthTargets = size(Targets,1); 

次に、ニューラルネット私は、以下のコスト関数を使用し、gamultiobjと呼ばれる多目的最適化手法で最高の動作点を検出するために

nets{k} = trainNet(nets{k}, experimentCoordinates, Targets(k,:)); 

:RKSを用いて訓練されている

costFunction = @(varargin) [nets{1}(varargin{:}'), nets{2}(varargin{:}')]; 

しかし、その代わりに、私はvarargin{:}'を適用したいと思います計算機を総称的にするためにインデクサによって各ネットワークを指定することなく、セルアレイ内に存在するすべてのニューラルネットワークオブジェクトへのパラメータを割り当てる。

1)ここでこれを行う方法は?

私は一番良い座標を取得したら、セル座標の各ニューラルネットワークオブジェクトに最適な座標のパラメータを適用したいと考えています。

これは、現在で行われている:

bestCoordinatesTargetOne = nets{1}(bestCoordinates); 
bestCoordinatesTargetTwo = nets{2}(bestCoordinates); 

2)計算がジェネリックにするために、各セルのインデックスを作成することなく、ここにこれを行うにはどのように?

costFunction = @(varargin) cell2mat(cellfun(@(net) net(varargin{:}'), nets, 'UniformOutput',false)); 

と最適化が通過した:Wolfieさんのコメント@私はコスト関数を更新によると

+1

、セル内の各要素に同じことを行うには、 'cellfun'を使用して、あなたの場合には、これらの要素がしたNNであり、あなたがやりたい事はそれらを呼び出すですいくつかの議論で... – Wolfie

+0

ありがとう@ウォルフィー、私はちょうど答えにあなたのコメントを構成しました。 –

答えて

0

そして、最高のは、ターゲットの座標を計算する:

bestCoordinatesTargets = cellfun(@(net) net(bestCoordinates), nets, 'UniformOutput',false); 
関連する問題