PyTorchで学ぶIntroduction to Deep Learning
Jasmin Ludolf
Senior Data Science Content Developer, DataCamp
$$
| データ割合 | 役割 | |
|---|---|---|
| 訓練 | 80-90% | モデルパラメータを学習 |
| 検証 | 10-20% | ハイパーパラメータを調整 |
| テスト | 5-10% | 最終モデルの性能を評価 |
$$
$$
各エポックで:
training_loss = 0.0for inputs, labels in trainloader: # 順伝播 outputs = model(inputs) # 損失を計算 loss = criterion(outputs, labels)# 逆伝播 loss.backward() # 勾配計算 optimizer.step() # 重み更新 optimizer.zero_grad() # 勾配リセット# 損失を計算して加算 training_loss += loss.item()epoch_loss = training_loss / len(trainloader)
validation_loss = 0.0 model.eval() # 評価モードに切替with torch.no_grad(): # 勾配を停止して効率化for inputs, labels in validationloader: # 順伝播 outputs = model(inputs) # 損失を計算 loss = criterion(outputs, labels) validation_loss += loss.item() epoch_loss = validation_loss / len(validationloader) # 平均損失を算出model.train() # 訓練モードに戻す

import torchmetrics# 精度メトリックを作成 metric = torchmetrics.Accuracy(task="multiclass", num_classes=3)for features, labels in dataloader: outputs = model(features) # 順伝播 # バッチ精度を計算(one-hot ラベル用に argmax を使用) metric.update(outputs, labels.argmax(dim=-1))# エポック全体の精度を算出 accuracy = metric.compute()# 次エポックに向けてリセット metric.reset()
PyTorchで学ぶIntroduction to Deep Learning