Matlab のニューラル ネットワーク ツールボックスを使用して、ニューラル ネットワーク ("nn") を設定およびトレーニングする Matlab .m スクリプトがあります。スクリプトはトレーニングの進行状況などを示す GUI を起動します。通常、nn のトレーニングには長い時間がかかります。
これらの実験は、64 個のプロセッサ コアを搭載したコンピューターで行っています。複数の Matlab セッションを実行することなく、同時に複数のネットワークをトレーニングしたいと考えています。だから私はしたい:
- ニューラル ネットワークのトレーニングを開始する
- ネットワークを作成するスクリプトを変更して、別のネットワークを作成します
- 変更されたネットワークのトレーニングを開始する
- スクリプトを変更して、さらに別のネットワークを作成します...
- 手順 1 ~ 4 を数回繰り返します
問題は、スクリプトを実行するとMatlabターミナルがブロックされるため、スクリプトが最後のコマンドを実行するまで何もできず、時間がかかることです。これらすべての計算を並行して実行するにはどうすればよいですか? 私はMatlabの並列ツールボックスを持っています。
編集:Matlab のバグ??
更新:この問題は R2012a でのみ発生するようで、R2012b では修正されているようです。
Edric's answerで推奨されているコマンド シーケンスを実行すると、非常に奇妙なエラーが発生します。これが私のコードです:
>> job = batch(c, @nn, 1, {A(:, 1:end -1), A(:, end)});
>> wait(job);
>> r = fetchOutputs(job)
Error using parallel.Job/fetchOutputs (line 677)
An error occurred during execution of Task with ID 1.
Caused by:
Error using nntraintool (line 35)
Java is not available.
nntraintool
エラーが発生した (Matlab のニューラル ネットワーク ツールキットの一部) の27 ~ 37 行目は次のとおりです。
if ~usejava('swing')
if (nargin == 1) && strcmp(command,'check')
result = false;
result2 = false;
return
else
disp('java used');
error(message('nnet:Java:NotAvailable'));
end
end
batch
コマンドを使ってジョブを実行すると、Swing が利用できないため、GUI を使用できないことが問題のようです。奇妙なことは、nn
関数が現在の形式で GUI を起動しないことです。エラーは、デフォルトで GUI を起動するトレインnn
が原因ですが、私はそれをオフにしました。
net.trainParam.showWindow = false;
net = train(net, X, y);
さらに興味深いことに、同じnn
関数が正常に起動された場合 ( )、27 行目の外側のif-thenステートメントに>> nn(A(:, 1:end -1), A(:, end));
入ることはありません(デバッガーを使用して確認しました)。したがって、同じ関数を使用すると、同じ引数式は、コマンドが正常に起動された場合は に評価されますが、 を使用して起動された場合は 1 に評価されます。nntraintool
~usejava('swing')
0
batch
これについてあなたはどう思いますか?醜いMatlabまたはニューラルネットワークツールボックスのバグのように見えます:(((