モデル性能の評価

PyTorchで学ぶIntroduction to Deep Learning

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

訓練・検証・テスト

$$

  • データセットは通常 3 つに分割:
データ割合 役割
訓練 80-90% モデルパラメータを学習
検証 10-20% ハイパーパラメータを調整
テスト 5-10% 最終モデルの性能を評価

$$

  • 訓練・検証中は 損失精度 を記録
PyTorchで学ぶIntroduction to Deep Learning

訓練損失の計算

$$

各エポックで:

  • dataloader の全バッチで損失を合計
  • エポック末に 平均訓練損失 を算出
training_loss = 0.0

for 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)
PyTorchで学ぶIntroduction to Deep Learning

検証損失の計算

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() # 訓練モードに戻す
PyTorchで学ぶIntroduction to Deep Learning

過学習

過学習の例

PyTorchで学ぶIntroduction to Deep Learning

torchmetrics で精度を計算

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

演習に進みましょう!

PyTorchで学ぶIntroduction to Deep Learning

Preparing Video For Download...