画像分類器のトレーニングループ
いよいよ画像分類器を学習させます! 先ほど定義した Net を使って、7種類の雲のタイプを見分けられるようにトレーニングします。
損失関数と最適化手法を定義するには、torch.nn と torch.optim の関数をそれぞれ nn と optim としてインポート済みなので利用します。トレーニングループ自体を変更する必要はありません。これまでに書いたものと同じで、学習中に損失を表示するためのロジックが少し追加されているだけです。
この演習はコースの一部です
PyTorchによる中級ディープラーニング
演習の手順
num_classesを7に設定してNetクラスからモデルを作成し、netに代入します。- 損失関数をクロスエントロピー損失として定義し、
criterionに代入します。 - 最適化手法を Adam として定義し、モデルのパラメータと学習率
0.001を渡してoptimizerに代入します。 dataloader_trainの学習用imagesとlabelsを反復処理して、トレーニング用の 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}")