コンテンツにスキップ

6.2.1 PyTorch ロードマップ:Tensor、Autograd、Module、DataLoader、Loop

PyTorch は深層学習ループを実行できるコードにします。まず実行順を覚えると、細部が後から楽になります。

PyTorch 章フローチャート

NumPy から PyTorch への学習ループマップ

2枚目の図は最小の PyTorch 学習ループです。tensor、model、loss、backward、step、repeat の順に確認します。

tensormodellossbackwardoptimizer.steprepeat

pytorch_first_loop.py を作り、torch をインストールしてから実行します。

import torch
w = torch.tensor([0.0], requires_grad=True)
learning_rate = 0.2
for step in range(1, 5):
loss = (w - 3).pow(2)
loss.backward()
with torch.no_grad():
w -= learning_rate * w.grad
w.grad.zero_()
print(step, "w=", round(w.item(), 3), "loss=", round(loss.item(), 3))

出力:

1 w= 1.2 loss= 9.0
2 w= 1.92 loss= 3.24
3 w= 2.352 loss= 1.166
4 w= 2.611 loss= 0.42

ここで PyTorch の重要な習慣が見えます。loss を計算し、backward() を呼び、勾配追跡なしで更新し、古い勾配を消します。

順番読む練習すること
16.2.2 sklearn から PyTorch へなぜ学習ループが明示的になるか
26.2.3 PyTorch 基礎tensor、dtype、shape、device
36.2.4 Autogradrequires_gradbackwardgrad
46.2.5 nn Moduleモデルクラス、パラメータ
56.2.6 データ読み込みDataset、DataLoader、batch
66.2.7 学習ループtrain/eval ループ、loss ログ
76.2.8 実践 Tipsshape、device、seed、デバッグ
86.2.9 PyTorch ワークショップ小さなモデルを動かして可視化する

PyTorch ループのメモを 1 つ残します。

tensor チェック
shape、dtype、device
autograd 確認
loss.backward() が勾配を埋める
モジュール確認
named_parameters() が学習可能なテンソルを示す
ローダー確認
1バッチがモデルと損失に一致する
ループ確認
train/eval の損失が別々に記録されている

PyTorch ループを読み、データ batch、モデル出力、loss、backward()、optimizer 更新の5つを見つけられれば合格です。

確認の考え方と解説
  1. 合格レベルの答えでは、tensor、model layer、loss、backward()、optimizer update を1つの学習ループとしてつなげます。
  2. 証拠には、動く小さな実験、tensor shape の確認、説明できる loss または validation curve を含めます。
  3. shape mismatch、loss が下がらない、過学習、data leakage、Attention/Transformer の data flow を説明できない、といった失敗例を1つ言えればよいです。