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 de exercício
- Defina o modelo usando a classe
Net
comnum_classes
definido como7
e 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
images
elabels
dedataloader_train
.
Exercício interativo prático
Experimente este exercício preenchendo 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}")