Mugichoko's blog

Mugichoko’s blog

しがない研究者のプログラミングを中心としたメモ書き.

今更PyTorchマスターへの道 (3) - 学習ループ

今日もPython Engineerのチュートリアルをこなしていきます.04から08をやりました.チュートリアルは英語なので,重要単語の日本語の対訳も探りつつ進めます.

Tutorials 04 - 07

  • 04
    • 線形回帰 (y=w*x) を例にとり,誤差逆伝搬の仕組み(連鎖律及び偏微分の結果をどう使うのか)を具体的に教えてくれる
    • YouTubeビデオを見るべし
    • コード的にはloss.backward()とするだけ
  • 05, 06, 07
    • numpyを使った実装から,徐々にPyTorchを使った実装に変えていく形でPyTorchの実装方法を教えてくれる

ここまでで理解すること

以下が基本的な学習の流れ

  1. データの用意(少なくとも入力・真値データの組が学習用に必要)
  2. モデル(model,例:model=nn.Linear(input_size, output_size))を用意
  3. 誤差(loss,例:loss=nn.MSELoss())と最適化ルーチン(optimizer,例:opt=torch.optim.SDG(model.parameters, lr=0.01))の用意
  4. 学習ループ
    1. 順伝搬 (forward pass) による予測値の推定:y_pred=model(X)
    2. 誤差の計算:loss=opt(y_pred, y)
    3. 逆伝搬 (backward pass) による勾配の計算:loss.backward()
    4. パラメータ(重み)の更新:opt.step()
    5. 勾配の削除/リセット:opt.zero_grad()

Tutorial 08

Logistic Regression - PyTorch Beginner 08

  • ロジスティック回帰 (Logistic Regression) の実装
  • 誤差をnn.BCELoss()に変更

加えてに理解すること

  • このチュートリアルではついでに (?) 学習用とテスト用のデータセットで分けて評価も実装
  • 評価の際にはwith torch.no_grad()で計算グラフ (Computational Graph) に計算が追記されないようにする

とりあえず,今日はここまで!