Clear Filters
Clear Filters

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

2 views (last 30 days)
hitoku
hitoku on 12 May 2020
Edited: hitoku on 12 May 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

Accepted Answer

hitoku
hitoku on 12 May 2020
Edited: hitoku on 12 May 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');

More Answers (0)

Categories

Find more on Deep Learning Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!