Python PyTorch
ライブラリ完全ガイド
PyTorch
は Facebook によって開発されたオープンソースのディープラーニングライブラリで、柔軟性と使いやすさを兼ね備えています。研究用途から本番環境まで幅広く活用されており、動的計算グラフにより直感的な開発が可能です。本記事では、Python を用いた PyTorch
の基本的な使い方をコピー可能なコード付きで紹介します。
1. PyTorch
の概要
インストール方法
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
は、柔軟性・可読性・拡張性に優れたディープラーニングライブラリとして、研究者・実務者問わず高く評価されています。直感的なコーディングでありながら、高度なカスタマイズも可能であるため、深層学習を学ぶならまず習得したいライブラリの一つです。