MATLABでの深層学習について

こんにちは
現在私はMATALBでの深層学習を実装して学習を行っていますが,学習時間が長いため途中結果をプログラムに挟み込みたいのですがどう実装していいのかわかりません.Checkpointで最初はできるのかと思っていたのですが,保存した.matファイルを読み込んで結果を出そうとしてもエラーを吐いてしまうので途中結果がみれていません.
何かいい方法があったら教えていただきたいです.よろしくお願いします.

2 Comments

Kenta
Kenta on 25 Aug 2020
こんにちは、load "一時保存されたネットワーク"、として読み込み、
分類の関数(predictなど)を実行すれば良いと思うのですがいかがでしょうか。もしかしたら、そもそも推論(ラベルを予測)するコードが間違っているという可能性もあるのかもしれません。その場合は、エポック数を1にして、その推論のコードが正しいか見てみると良いと思います。
Sasaki Takumi
Sasaki Takumi on 25 Aug 2020
回答ありがとうございます! 一度その方法等で試して見ます

Sign in to comment.

 Accepted Answer

Kenta
Kenta on 26 Aug 2020

0 votes

コメントのほう、返信ありがとうございます。はい、試してみてください。また結果が出ましたら共有いただけると幸いです。
公式ページでも方法の記載がありました。こちらがわかりやすいと思います

12 Comments

Sasaki Takumi
Sasaki Takumi on 26 Aug 2020
こんにちは
昨日ご指摘があった通りに試して見たのですが以下のエラーによって止まってしまいました
入力ネットワークには、空の Mean プロパティまたは Variance プロパティをもつバッチ正規化層があってはなりません。バッチ正規化の統計値を計算するには、関数 trainNetwork を使用してください。
Y = predictBatch( ...
Y = this.calculatePredict( ...
私はセマンティックセグメンテーションを実行していてpredictを使用するときに画像を4D配列にするという記事をみて4D配列に変換したのですが結果はエラーで変わりませんでした.
この改善点について何かしらのアドバイスを頂けると幸いです.
Kenta
Kenta on 26 Aug 2020
なるほど、コードとデータがあれば考えやすいんですが添付していただくか、URLを教えて頂けますか?
Sasaki Takumi
Sasaki Takumi on 27 Aug 2020
申し訳ありません,データに関しては外部に出せない物を扱っているので今回書いてみたプログラムのみお送りします.
MATLABに関しては初心者なので理解していない部分もかなりあります.
よろしくお願いします。
Kenta
Kenta on 27 Aug 2020
なるほど、それでは上のURLをまずはやってみてください。
Sasaki Takumi
Sasaki Takumi on 27 Aug 2020
ありがとうございます。
調べていたところ下記のURLを発見し同じような症状でした.
ここのページから察するに途中のチェックポイントで状態を確認したい場合は学習を完結させる必要があり,その学習を1エポックで完結させることでネットワークの大幅な変更がなく途中のネットワークの学習結果を出すことがでできるという理解でよろしいのでしょうか?
途中結果のものをそのまま使うことができないといった感じでtrainNetworkにて一度ネットワークの学習を完結させる必要があると行った感じでしょうかね
Kenta
Kenta on 27 Aug 2020
ありがとうございます。
失礼しました。そうかもしれませんね。チェックポイントからの学習の再開であって、直接推論に使うことは想定されていないのかもしれません。ひとまず、その途中のネットワークをtrainnetwork関数などで再学習することは可能ですか?
Sasaki Takumi
Sasaki Takumi on 27 Aug 2020
はい,頂いたURLを元にチェックポイントからの学習の再開自体は可能だと思います.
実施してみてどうなったかを共有したいと思います.
Kenta
Kenta on 27 Aug 2020
ありがとうございます。また教えてください。
ところで「途中結果をプログラムに挟み込みたい」とは具体的にどういうことでしょうか?
エポック数ごとの検証データの正答率をプロットしたいとかそういうことでしょうか?
Sasaki Takumi
Sasaki Takumi on 27 Aug 2020
実施してみた結果を共有します.
以下のような感じでチェックポイントをロードして学習してみたところ無事学習が進み途中結果を得ることができました.
本当であれば1エポックでやるべきなのでしょうかあえて10エポックでやってみました.
この部分に関しては各々変更してみるのがいいかなと思いました.
Sasaki Takumi
Sasaki Takumi on 27 Aug 2020
>「途中結果をプログラムに挟み込みたい」とは具体的にどういうことでしょうか?
→すみません,途中結果をプログラムに挟み込むというのは
学習途中で得られるチェックポイントを学習が完了したネットワークとして保存する方法をメインの部分に入れる方法はないのかなと思ったのですが,今回の方法でもそんなに手間ではないのでこの方法で学習途中の結果を確認して行こうと思います.
Sasaki Takumi
Sasaki Takumi on 27 Aug 2020
プログラムのクラスに関しては伏せさせて頂きました.またチェックポイントのパスも一応伏せさせて頂きました.
Kenta
Kenta on 28 Aug 2020
はい、丁寧にご報告ありがとうございました。お使いのネットワークはbatch normalization層が入っていて、そのネットワークだと、このようなエラーが出ていて、そうでないネットワークを使うと問題ないのかもしれません。

Sign in to comment.

More Answers (0)

Categories

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

Products

Release

R2020a

Asked:

on 25 Aug 2020

Commented:

on 28 Aug 2020

Community Treasure Hunt

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

Start Hunting!