始める無料で始める

画像分類器のトレーニングループ

いよいよ画像分類器を学習させます! 先ほど定義した Net を使って、7種類の雲のタイプを見分けられるようにトレーニングします。

損失関数と最適化手法を定義するには、torch.nntorch.optim の関数をそれぞれ nnoptim としてインポート済みなので利用します。トレーニングループ自体を変更する必要はありません。これまでに書いたものと同じで、学習中に損失を表示するためのロジックが少し追加されているだけです。

この演習はコースの一部です

PyTorchによる中級ディープラーニング

コースを見る

演習の手順

  • num_classes7 に設定して Net クラスからモデルを作成し、net に代入します。
  • 損失関数をクロスエントロピー損失として定義し、criterion に代入します。
  • 最適化手法を Adam として定義し、モデルのパラメータと学習率 0.001 を渡して optimizer に代入します。
  • dataloader_train の学習用 imageslabels を反復処理して、トレーニング用の for ループを開始します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Define the model
____ = ____
# Define the loss function
____ = ____
# Define the optimizer
____ = ____

for epoch in range(3):
    running_loss = 0.0
    # Iterate over training batches
    ____
        optimizer.zero_grad()
        outputs = net(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    
    epoch_loss = running_loss / len(dataloader_train)
    print(f"Epoch {epoch+1}, Loss: {epoch_loss:.4f}")
コードを編集して実行