統計ロードマップ
2026-04-30·実装·⏱ 約 4

PyTorch 入門 ─ TensorFlow と差別化された使いやすさ

深層学習フレームワーク PyTorch の基本を 30 分で押さえる。Tensor 操作 → 自動微分 → モデル定義 → 学習ループまで、最小コードで体験。

PyTorch は Meta が公開し、研究・実装の両面で 深層学習のデファクトスタンダード となっているフレームワーク。NumPy ライクな API、Pythonic な書き心地、強力な自動微分、GPU 対応 ── これらを 30 分で体験します。

Tensor の基本

Tensor は GPU に乗る NumPy 配列
import torch

x = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
print(x)
print(x.shape)         # torch.Size([2, 2])
print(x.mean())        # 2.5

# GPU に転送(GPU 環境で)
if torch.cuda.is_available():
    x = x.to('cuda')

自動微分(Autograd)

`requires_grad=True` にすれば、計算グラフが自動で構築され、`.backward()` で勾配が計算されます。これが NN 学習の心臓部。

自動微分 ─ 勾配を自動計算
x = torch.tensor(2.0, requires_grad=True)
y = x ** 3 + 2 * x
y.backward()
print(x.grad)  # 3x² + 2 = 14

モデル定義 ─ nn.Module

シンプルな MLP
import torch.nn as nn

class MLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)
        self.relu = nn.ReLU()

    def forward(self, x):
        x = self.relu(self.fc1(x))
        return self.fc2(x)

model = MLP()
print(model)

学習ループの典型

毎回出てくる 5 行
import torch.optim as optim

opt = optim.Adam(model.parameters(), lr=1e-3)
loss_fn = nn.CrossEntropyLoss()

for x, y in dataloader:
    pred = model(x)               # 順伝播
    loss = loss_fn(pred, y)       # 損失
    opt.zero_grad()               # 勾配ゼロ化
    loss.backward()               # 逆伝播
    opt.step()                    # 重み更新
💡 PyTorch の強み

Define-by-Run: 計算グラフが実行時に作られるので、Python の if / for で動的なネットワークが書ける。デバッグも普通の Python と同じ感覚。TensorFlow は Define-and-Run だった ため初心者の壁になっていたが、TF2 で改善された。

より高水準のツール

  • PyTorch Lightning: 学習ループのボイラープレートを自動化
  • Hugging Face Transformers: 事前学習済みモデルの即利用
  • TorchVision / TorchAudio: 画像・音声の標準ローダ + モデル
  • Accelerate: マルチ GPU・分散学習を 1 行追加で

次のステップ

  • [ディープラーニング基礎ミニ教科書](/deep-learning-basics)
  • [E 資格 教科書](/certs/e-shikaku/textbook)
  • [プログラミング入門](/programming) ─ Python・NumPy・Pandas
  • [Transformer の数学](/blog/transformer-math)
Related Articles

関連記事