始める無料で始める

マルチ出力モデルの学習

複数の出力を持つモデルを学習するときは、損失関数を正しく定義することが重要です。

この例では、モデルはアルファベットと文字の2つの予測を出力します。各出力には対応する正解ラベルがあり、それぞれについて別々の損失を計算できます。1つはアルファベットの誤分類に対する損失、もう1つは文字の誤分類に対する損失です。どちらもマルチクラス分類タスクに該当するため、各回でCross-Entropy損失を適用できます。

ただし、勾配降下法で最適化できるのは1つの損失関数のみです。そのため、総損失はアルファベット損失と文字損失の合計として定義します。

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

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

コースを見る

演習の手順

  • アルファベット分類の損失を計算し、loss_alpha に代入します。
  • 文字分類の損失を計算し、loss_char に代入します。
  • 2つの部分損失の合計を総損失として計算し、loss に代入します。

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

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

net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.05)

for epoch in range(1):
    for images, labels_alpha, labels_char in dataloader_train:
        optimizer.zero_grad()
        outputs_alpha, outputs_char = net(images)
        # Compute alphabet classification loss
        loss_alpha = ____
        # Compute character classification loss
        loss_char = ____
        # Compute total loss
        loss = ____
        loss.backward()
        optimizer.step()
コードを編集して実行