Цикл обучения классификатора изображений
Пришло время обучить классификатор изображений! Вы будете использовать ранее определённую сеть Net и обучите её различать семь типов облаков.
Для определения функции потерь и оптимизатора используйте функции из torch.nn и torch.optim, которые импортированы как nn и optim соответственно. Изменять сам цикл обучения не нужно: он построен так же, как и предыдущие, но дополнительно выводит значение потерь в процессе обучения.
Это упражнение является частью курса
Глубокое обучение на PyTorch: средний уровень
Инструкции к упражнению
- Создайте модель на основе класса
Net, задавnum_classesравным7, и присвойте её переменнойnet. - Определите функцию потерь как кросс-энтропийную и присвойте её переменной
criterion. - Определите оптимизатор Adam, передав ему параметры модели и скорость обучения
0.001, и присвойте его переменнойoptimizer. - Запустите цикл обучения, перебирая изображения
imagesи меткиlabelsизdataloader_train.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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}")