Hello there, ('ω')ノ
🧠 はじめに:PyTorchとは?
PyTorch(パイトーチ) とは、Facebook(現Meta)が開発したディープラーニング用のPythonフレームワーク です。
機械学習や深層学習のモデル開発に広く使われており、以下のような特徴があります。
✅ 直感的で柔軟なコーディング: 動的計算グラフ(Dynamic Computational Graph)を採用し、コードがわかりやすい
✅ 研究者・開発者に人気: モデルのプロトタイピングや実験が簡単
✅ GPU・TPU対応: 高速計算のためにGPU/TPUを活用
🎯 なぜPyTorchなのか?
PyTorchのメリットは以下の通りです。
💡 1. コードがシンプルで柔軟
- NumPyライクなAPIでPython初心者でも扱いやすい
- 動的計算グラフにより、実行時に柔軟にモデルを構築可能
⚡️ 2. 高速な計算とGPUサポート
- GPU/TPUを活用して大規模データ処理が可能
- Google Colabと連携すれば無料でGPUを利用できる
🔬 3. 研究・プロダクションの両方で活用
- 研究段階のプロトタイプから、実運用モデルまで幅広く対応
- Hugging Face Transformersなどの最新モデルとも互換性あり
🖥️ Google Colabとは?
Google Colab(コラボ) とは、Googleが提供する クラウド上でPythonのコードを実行できるJupyter Notebook環境 です。
特に、PyTorchなどの機械学習・ディープラーニングのフレームワークを使う際に便利です。
✅ 無料でGPU/TPUが使える
✅ Python環境のセットアップ不要
✅ ブラウザから簡単にコードを実行可能
⚡️ 【STEP 1】Google Colabのセットアップ
📝 1. Google Colabにアクセス
👉 Google Colab にアクセスして、Googleアカウントでログインします。
📚 2. 新しいノートブックの作成
- 「新しいノートブック」 をクリック
.ipynbファイルが開かれ、Jupyter Notebook形式の環境が自動で立ち上がります
🖥️ 3. GPU/TPUを有効にする
- メニューの 「ランタイム」→「ランタイムのタイプを変更」 を選択
- 「ハードウェア アクセラレータ」 で
GPUまたはTPUを選択 - これでPyTorchの高速処理が可能になります!
⚡️ 【STEP 2】PyTorchのインストール
Google Colabでは、PyTorchがすでにインストールされていますが、バージョンを確認したい場合は以下のコマンドを実行します。
# PyTorchのバージョン確認 import torch print(torch.__version__)
PyTorchのインストールが必要な場合:
# 最新版のPyTorchをインストール
!pip install torch torchvision torchaudio
🧩 【STEP 3】PyTorchの基本操作
✅ 1. Tensor(テンソル)の作成
PyTorchのデータ構造である Tensor(テンソル) は、NumPy配列に似ていますが、GPUでも計算可能です。
import torch # テンソルの作成 x = torch.tensor([[1, 2], [3, 4]]) print(x) # ゼロから作成 zeros = torch.zeros(3, 3) print(zeros) # ランダム値で作成 rand_tensor = torch.rand(2, 2) print(rand_tensor)
✅ 2. テンソルの演算
基本的な演算はNumPyと同じ感覚で行えます。
a = torch.tensor([3, 4, 5]) b = torch.tensor([1, 2, 3]) # 加算 result_add = a + b print(result_add) # 行列積 matrix1 = torch.tensor([[1, 2], [3, 4]]) matrix2 = torch.tensor([[2, 0], [1, 2]]) result_mul = torch.matmul(matrix1, matrix2) print(result_mul)
✅ 3. GPUへの移行
# GPUが利用可能か確認 device = "cuda" if torch.cuda.is_available() else "cpu" print(f"Using device: {device}") # GPUにテンソルを移動 x_gpu = x.to(device) print(x_gpu)
🤖 【STEP 4】PyTorchでニューラルネットワークの構築
📚 1. シンプルなニューラルネットワーク
import torch import torch.nn as nn import torch.optim as optim # ニューラルネットワークの定義 class SimpleNN(nn.Module): def __init__(self): super(SimpleNN, self).__init__() self.fc1 = nn.Linear(2, 4) self.fc2 = nn.Linear(4, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = torch.sigmoid(self.fc2(x)) return x # モデルのインスタンス化 model = SimpleNN() print(model)
⚡️ 2. モデルの学習・最適化
# 損失関数と最適化アルゴリズム criterion = nn.BCELoss() # バイナリクロスエントロピー optimizer = optim.Adam(model.parameters(), lr=0.01) # ダミーデータ data = torch.tensor([[0.5, 0.8], [1.2, 0.4], [0.3, 0.9]]) labels = torch.tensor([[1.0], [0.0], [1.0]]) # 10エポックのトレーニングループ for epoch in range(10): optimizer.zero_grad() outputs = model(data) loss = criterion(outputs, labels) loss.backward() optimizer.step() print(f'Epoch [{epoch+1}/10], Loss: {loss.item():.4f}')
🎨 【STEP 5】Google Colabで画像認識モデルを実装
📸 1. CIFAR-10データセットの読み込み
import torchvision import torchvision.transforms as transforms # データの前処理 transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) # データのダウンロード trainset = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform) trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=True)
🤖 2. CNNモデルの定義
class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1) self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0) self.fc1 = nn.Linear(16 * 16 * 16, 10) def forward(self, x): x = self.pool(torch.relu(self.conv1(x))) x = x.view(-1, 16 * 16 * 16) x = self.fc1(x) return x
⚡️ 【STEP 6】Colabでのファイルの保存・共有
💾 1. ノートブックの保存
- 「ファイル」→「ドライブにコピーを保存」 でGoogleドライブに保存可能
.ipynbファイルはダウンロードしてローカルで編集も可能
📤 2. モデルの保存
# モデルの保存 torch.save(model.state_dict(), 'model.pth') # モデルの読み込み model.load_state_dict(torch.load('model.pth'))
🎁 まとめ:PyTorchとGoogle ColabでAI開発を始めよう!
✅ PyTorchは、柔軟性と高速性を兼ね備えたディープラーニングフレームワーク
✅ Google Colabを使えば、無料でGPU/TPU環境が利用可能
✅ テンソル操作、モデル構築、トレーニングの基本をマスター!
✅ 画像認識モデルや生成モデルの構築もColabで手軽に実現可能
Best regards, (^^ゞ