이미지 분류기 학습 루프
이제 이미지 분류기를 학습해 볼까요? 앞에서 정의한 Net을 사용해 일곱 가지 구름 유형을 구분하도록 학습할 거예요.
손실 함수와 옵티마이저를 정의하려면 torch.nn과 torch.optim의 함수를 사용해야 하며, 각각 nn과 optim으로 임포트되어 있어요. 학습 루프 자체는 바꿀 필요가 없어요. 이전에 작성한 루프와 동일하며, 학습 중 손실을 출력하는 로직이 조금 추가되어 있을 뿐이에요.
이 연습은 강의의 일부입니다
PyTorch로 배우는 Intermediate Deep Learning
연습 안내
num_classes를7로 설정해Net클래스로 모델을 정의하고net에 할당하세요.- 손실 함수를 교차 엔트로피 손실로 정의하고
criterion에 할당하세요. - 옵티마이저를 Adam으로 정의하고, 모델의 파라미터와 학습률
0.001을 전달해optimizer에 할당하세요. dataloader_train의 학습용images와labels를 순회하며 학습용 for 루프를 시작하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# 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}")