RNN(layrec​net)においてGP​Uをもちいた場合の学​習の停止条件はどのよ​うになっていますか?

13 visualizzazioni (ultimi 30 giorni)
hitoku
hitoku il 12 Mag 2020
Modificato: hitoku il 12 Mag 2020
RNN(layrecnet)の学習の高速化のために一般的なRNNのサンプルコードにGPUの使用と並列計算を行うためのコードを書き加えた以下のコードを実行しました。
parpool
[X,T] = simpleseries_dataset;
net = layrecnet(1:2,10);
[Xs,Xi,Ai,Ts] = preparets(net,X,T);
net = train(net,Xs,Ts,Xi,Ai,'UseGPU','yes','UseParallel','yes');
view(net)
Y = net(Xs,Xi,Ai);
perf = perform(net,Y,Ts);
layrecnetの規定の学習アルゴリズムは
trainlm
だが、GPUでは不可能なため
trainscg
に変更されていることがエラーメッセージからわかりました。
上記のコードを実行した結果、以下のウィンドウが表示されました。
このウィンドウから本来のtrainscgの学習停止条件である検証データによる停止条件が正常に動作していないため過学習が抑制できていないと思われるますが、どのようにすればGPUを用いたRNN(layrecnet)において「検証データによる停止条件」を動作させることができるのでしょうか?
なお、本コードの実行環境は次の通りです。
GTX 1660 super
AMD Ryzen 5 3400G

Risposta accettata

hitoku
hitoku il 12 Mag 2020
Modificato: hitoku il 12 Mag 2020
解決しました。
下記質問のコードを参考にして、XとTをcell型からdouble型に変更した以下のコードではRNNを検証データで停止できました。
parpool
[X,T] = simpleseries_dataset;
X = cell2mat(X) ;
T = cell2mat(T) ;
net_layrec = layrecnet(1:2,10);
net_layrec.divideFcn = 'divideind' ;
net_layrec.divideParam.trainInd = 1:70 ;
net_layrec.divideParam.valInd = 71:85 ;
net_layrec.divideParam.testInd = 86:98 ;
[net_layrec,tr_layrec] = train(net_layrec,X,T,'UseGPU','yes','UseParallel','yes');

Più risposte (0)

Categorie

Scopri di più su Deep Learning Toolbox in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!