Loop de treinamento do classificador de imagem
É hora de treinar o classificador de imagens! Você usará o Net que definiu anteriormente e o treinará para distinguir entre sete tipos de nuvem.
Para definir a perda e o otimizador, você precisará usar as funções de torch.nn e torch.optim, importadas para você como nn e optim, respectivamente. Você não precisa alterar nada no loop de treinamento em si: ele é exatamente como os que você escreveu antes, com alguma lógica adicional para imprimir a perda durante o treinamento.
Este exercício faz parte do curso
Aprendizagem profunda intermediária com PyTorch
Instruções do exercício
- Defina o modelo usando a classe
Netcomnum_classesdefinido como7e atribua-o anet. - Defina a função de perda como perda de entropia cruzada e atribua-a a
criterion. - Defina o otimizador como Adam, passando a ele os parâmetros do modelo e a taxa de aprendizado de
0.001, e atribua-o aoptimizer. - Inicie o treinamento do loop for iterando sobre o treinamento
imageselabelsdedataloader_train.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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}")