Träningsloop för bildklassificerare
Nu är det dags att träna bildklassificeraren! Du använder det Net du definierade tidigare och tränar det att skilja mellan sju molntyper.
För att definiera förlustfunktionen och optimeraren behöver du använda funktioner från torch.nn och torch.optim, som importerats åt dig som nn respektive optim. Du behöver inte ändra något i själva träningsloopen – den ser ut precis som de du skrev tidigare, med lite extra logik för att skriva ut förlusten under träningen.
Den här övningen är en del av kursen
Fördjupad djupinlärning med PyTorch
Övningsinstruktioner
- Definiera modellen med din
Net-klass mednum_classessatt till7och tilldela den tillnet. - Definiera förlustfunktionen som korsentriopiförlust och tilldela den till
criterion. - Definiera optimeraren som Adam, skicka med modellens parametrar och inlärningshastigheten
0.001, och tilldela den tilloptimizer. - Starta träningens for-loop genom att iterera över träningsdata med
imagesochlabelsfråndataloader_train.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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}")