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

조회 수: 15 (최근 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!