1-2 Pytorchのディープラーニング実装の流れ
数学も学んだ。
ディープラーニングの知識についても少しはついた。
いよいよ、
パイトーチによる、ディープラーニングからSSDの学習を始めていく。
まずはアウトプット。
パイトーチの学習の流れ
前処理、後処理、モデルの入出力確認
↓
Datasetの作成
↓
DataLoaderの作成
↓
ネットワークモデルの作成
↓
順伝播の定義
↓
損失関数の定義
↓
最適化関数の定義
↓
学習・検証の実施
↓
テストデータで推論
それぞれ説明するけど、前処理、後処理、入出力はいいだろう。
Datasetについて
イメージはしづらいが、入力するデータとラベルがペア(辞書形式?)になったもの。
学習用、検証用、テスト用とそれぞれのデータを持ってる。
ただ、まさかのそれぞれ1組ずつで返すモジュールらしいっす。
DataLoaderについて
さっき話したDatasetからデータを取り出しやすくする役割のやつ。
ていってもわかりにくい
つまりは1組で返してくるデータをバッチサイズごとに束にして、くれる機能のやつ。
更にそのミニバッチ内でシャッフルしてくれたり、Tensor型にしてくれる。
ネットワークモデルの作成
これはいいよね。
独自モデル?学習済みモデル?学習済みモデルの変更モデル?
順伝播の定義
単純なモデルの場合は前から後ろのレイヤーへって感じだが、
ディープラーニングの場合はそうはいかない。
複雑な順伝播もあるので、しっかりと定義を行う
損失関数の定義(逆伝播)
今までは単純に前から後ろへと伝播させていく流れだったが、
この損失関数の定義によって、
教師データと出力データの誤差(=どれだけ変わったのか?どれだけ勾配があったのか?)を算出する
最適化関数の定義
損失関数で算出された値をもとに各パラメータの値を徐々に小さくしていく関数を定義する
それを学習の目的はそもそも、この損失関数の値を小さくしていくことにあるからだ。
それで、学習をさせていき、
推論、学習、テストを行って、精度を確認する。
過学習が起こっている場合は、精度が一定で止まってしまう。それを止めるのをアーリーストッピングっていうらしい。