okpy

Pythonエンジニア兼テックリーダーが、多くのプロジェクトとチーム運営から得た実践的な知識を共有するブログです。

ディープラーニングライブラリPyTorchの基本的な使い方

Python PyTorch ライブラリ完全ガイド

PyTorchFacebook によって開発されたオープンソースディープラーニングライブラリで、柔軟性と使いやすさを兼ね備えています。研究用途から本番環境まで幅広く活用されており、動的計算グラフにより直感的な開発が可能です。本記事では、Python を用いた PyTorch の基本的な使い方をコピー可能なコード付きで紹介します。

1. PyTorch の概要

  • 動的計算グラフによる柔軟なモデリング
  • GPU(CUDA)による高速処理対応。
  • torch.nn, torch.optim, torch.utils.data など豊富なサブモジュール。

インストール方法

pip install torch torchvision

2. 主な機能と使用例

(1) テンソルの作成と演算

import torch

a = torch.tensor([1.0, 2.0])
b = torch.tensor([3.0, 4.0])
print(a + b)

(2) GPU 上での演算

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
a = torch.rand(3, 3).to(device)
print(a)

(3) ニューラルネットワークの定義(nn.Module)

import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(10, 2)
    def forward(self, x):
        return self.fc(x)

(4) 損失関数と最適化(optimizer)

model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

(5) データセットとデータローダー

from torch.utils.data import DataLoader, TensorDataset

dataset = TensorDataset(torch.randn(100, 10), torch.randint(0, 2, (100,)))
dataloader = DataLoader(dataset, batch_size=32)

(6) 学習ループの記述

for epoch in range(5):
    for x_batch, y_batch in dataloader:
        optimizer.zero_grad()
        outputs = model(x_batch)
        loss = criterion(outputs, y_batch)
        loss.backward()
        optimizer.step()
    print(f"Epoch {epoch+1}: Loss = {loss.item()}")

(7) 推論と精度評価

with torch.no_grad():
    y_pred = model(torch.randn(10, 10))
    predicted_classes = torch.argmax(y_pred, dim=1)
    print(predicted_classes)

(8) モデルの保存と読み込み

torch.save(model.state_dict(), "model.pth")
model.load_state_dict(torch.load("model.pth"))

(9) モデルをエクスポート(ONNX)

dummy_input = torch.randn(1, 10)
torch.onnx.export(model, dummy_input, "model.onnx")

(10) Autograd による勾配計算

x = torch.tensor([2.0], requires_grad=True)
y = x ** 2
y.backward()
print(x.grad)

3. PyTorch の主な機能まとめ

機能 説明
torch.Tensor NumPy 互換のテンソル構造。GPU 演算可能
torch.nn モデル構築用の層・損失関数などを提供
torch.optim 最適化アルゴリズムSGD, Adam など)
DataLoader バッチ処理とシャッフルを自動化
Autograd 自動微分による勾配計算をサポート

まとめ

PyTorch は、柔軟性・可読性・拡張性に優れたディープラーニングライブラリとして、研究者・実務者問わず高く評価されています。直感的なコーディングでありながら、高度なカスタマイズも可能であるため、深層学習を学ぶならまず習得したいライブラリの一つです。