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

13 次查看(过去 30 天)
hitoku
hitoku 2020-5-12
编辑: hitoku 2020-5-12
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

采纳的回答

hitoku
hitoku 2020-5-12
编辑:hitoku 2020-5-12
解決しました。
下記質問のコードを参考にして、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');

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Deep Learning Toolbox 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!