Обучающая модель в Pytorch с пользовательскими потерями как настроить оптимизатор и запустить обучение?

#python #pytorch #loss #inference #custom-training

#python #pytorch #потеря #вывод #пользовательское обучение

Вопрос:

Я новичок в pytorch, и я пытаюсь запустить модель github, которую я нашел, и протестировать ее. Итак, автор предоставил модель и функцию потерь.

вот так:

 #1. Inference the model
model = PhysNet_padding_Encoder_Decoder_MAX(frames=128)
rPPG, x_visual, x_visual3232, x_visual1616 = model(inputs)

#2. Normalized the Predicted rPPG signal and GroundTruth BVP signal
rPPG = (rPPG-torch.mean(rPPG)) /torch.std(rPPG)     # normalize
BVP_label = (BVP_label-torch.mean(BVP_label)) /torch.std(BVP_label)     # normalize

#3. Calculate the loss
loss_ecg = Neg_Pearson(rPPG, BVP_label)
  

Загрузка данных

     train_loader = torch.utils.data.DataLoader(train_set, batch_size = 20, shuffle = True)

    batch = next(iter(train_loader))

    data, label1, label2 = batch

    inputs= data
  

Допустим, я хочу обучить эту модель в течение 15 эпох.
Итак, это то, что у меня есть до сих пор:
Я пытаюсь настроить оптимизатор и обучение, но я не уверен, как привязать пользовательские потери и загрузку данных к модели и правильно настроить обучение в 15 эпох.

 optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

for epoch in range(15):
  ....
  

Есть предложения?

Ответ №1:

Я предположил, что BVP_label — это label1 для train_loader

 train_loader = torch.utils.data.DataLoader(train_set, batch_size = 20, shuffle = True)

# Using GPU
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

model = PhysNet_padding_Encoder_Decoder_MAX(frames=128)
model.to(device)

optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

for epoch in range(15):
    model.train()
    for inputs, label1, label2 in train_loader:
        rPPG, x_visual, x_visual3232, x_visual1616 = model(inputs)
        BVP_label = label1 # assumed BVP_label is label1

        rPPG = (rPPG-torch.mean(rPPG)) /torch.std(rPPG)
        BVP_label = (BVP_label-torch.mean(BVP_label)) /torch.std(BVP_label)
        
        loss_ecg = Neg_Pearson(rPPG, BVP_label)
        
        optimizer.zero_grad()
        loss_ecg.backward()
        optimizer.step()
  

Шаги обучения PyTorch приведены ниже.

  • Создать загрузчик данных
  • Инициализировать модель и оптимизатор
  • Создайте объект устройства и переместите модель на устройство

в цикле поезда

  • выберите мини-пакет данных
  • используйте модель для прогнозирования
  • вычислите потери
  • loss.backward() обновляет градиенты модели
  • обновите параметры с помощью оптимизатора

Как вы, возможно, знаете, вы также можете проверить учебные пособия PyTorch.

Изучение PyTorch с примерами

Что такое torch.nn на самом деле?