0

matlab NN Toolboxで巨大なデータセットを実行する際に問題に直面しています-問題は->trainlmアルゴリズムを使用すると、NN Toolboxはデータの実行に失敗し、メモリ不足エラーが表示されますが、他のアルゴリズムではメモリの問題はありません。なんでそうなの?さらに、隠しニューロンを15個以上置くと、メモリ不足になります。この種の問題を解決するにはどうすればよいですか?

もう1つ:トレーニング用に10、45、45%のデータ分割を配置しました-検証とテストですが、コードを実行した後、ワークスペースでトレーニング用に25%のデータ、検証用に37%のデータ、37%のデータを実行したことがわかりましたテスト目的で。この問題を解決するにはどうすればよいですか?

誰かがこの種の問題を解決する方法を知っていますか?コメントやご提案をいただければ幸いです。ありがとう。

Windows7で実行されているラップトップでR2010bバージョンのMATLABを使用しています。

これが私がデータセットをトレーニングするために使用したコードです

EX_355 = xlsread('Training Dataset.xlsx','B2:B435106');

EX_532 = xlsread('Training Dataset.xlsx','C2:C435106');

BA_355 = xlsread('Training Dataset.xlsx','D2:D435106');

BA_532 = xlsread('Training Dataset.xlsx','E2:E435106');

BA_1064 = xlsread('Training Dataset.xlsx','F2:F435106');

Reff = xlsread('Training Dataset.xlsx','G2:G435106');

Input(1,:) = EX_355;

Input(2,:) = EX_532;

Input(3,:) = BA_355;

Input(4,:) = BA_532;

Input(5,:) = BA_1064;

Target(1,:) = Reff;

net = feedforwardnet;

net = configure(net,Input,Target);

net = init(net);

inputs = Input;

targets = Target;

hiddenLayerSize = 10;

net = fitnet(hiddenLayerSize);

net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};

net.outputs{2}.processFcns = {'removeconstantrows','mapminmax'};

net.divideFcn = 'dividerand';

net.divideMode = 'sample';

net.divideParam.trainRatio = 10/100;

net.divideParam.valRatio = 45/100;

net.divideParam.testRatio = 45/100;

net.trainFcn = 'trainlm';

net.performFcn = 'mse';

net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ... 'plotregression', 'plotfit'};

[net,tr] = train(net,inputs,targets);

outputs = net(inputs);

errors = gsubtract(targets,outputs);

performance = perform(net,targets,outputs)

trainTargets = targets .* tr.trainMask{1};

valTargets = targets .* tr.valMask{1};

testTargets = targets .* tr.testMask{1};

net.trainParam.epochs;

net.trainParam.time;

net.trainParam.goal;

net.trainParam.min_grad;

net.trainParam.mu_max;

net.trainParam.max_fail;

net.trainParam.show;
4

2 に答える 2

2

「電車」の前にこれを貼り付けます

net.efficiency.memoryReduction = NUMBER;

コードが実行されるまでこの番号を変更します

1からインクリメントできます->inf

詳細については、http://www.mathworks.com/help/nnet/ug/train-the-network.htmlをご覧ください。

于 2012-10-06T11:44:21.700 に答える
0

このリンクを確認できます http://www.mathworks.co.uk/help/nnet/ug/optimize-neural-network-training-speed-and-memory.html

これは MathWorks からの引用です。

MATLAB が使用されており、メモリの制限が問題である場合、データの N 個のサブセットのそれぞれに対して N 回連続して計算を実行する代わりに、必要な一時ストレージの量を N 分の 1 に減らすことができます。

net2 = train(net1,x,t,'reduction',N);

これをメモリ削減と呼びます。

コードが実行されるまで N の値を増やし続けます。

于 2014-08-27T05:17:42.740 に答える