PyTorchでのモデル転移学習の方法は何ですか?

PyTorchでの転移学習の場合、一般的に以下の手順が必要です。

  1. 事前学習モデルをロード:最初に、大規模データセットでトレーニングされたモデル、例えばImageNetでトレーニングされたResNetをロードします。
import torch
import torchvision.models as models

pretrained_model = models.resnet18(pretrained=True)
  1. モデルの最終層を変更します。一般的に、事前学習モデルの最後の層を変更する必要があります。たとえば、事前学習モデルの全結合層を、新しいタスクに適した全結合層に置き換えることがあります。
pretrained_model.fc = nn.Linear(pretrained_model.fc.in_features, num_classes)
  1. 通常は、事前にトレーニングされたモデルのパラメータを凍結し、新しく追加された全結合層のみを訓練します。
for param in pretrained_model.parameters():
    param.requires_grad = False
  1. あなたのタスクに適した損失関数と最適化器を定義してください。
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(pretrained_model.fc.parameters(), lr=0.001)
  1. モデルのトレーニング:新しいデータセットを使用してモデルをトレーニングします。
for epoch in range(num_epochs):
    for images, labels in dataloader:
        optimizer.zero_grad()
        outputs = pretrained_model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

PyTorchを使用して、モデルの転移学習を行うことができます。具体的なタスク要件に応じて、手順を調整や拡張することができます。

bannerAds