メインコンテンツへスキップ

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

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

まずワークフローを見る

PyTorch 章フローチャート

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

tensor -> model -> loss -> backward -> optimizer.step -> repeat

Autograd を一度動かす

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 ループを読み、データ batch、モデル出力、loss、backward()、optimizer 更新の5つを見つけられれば合格です。