멀티 출력 모델 훈련하기
여러 개의 출력을 갖는 모델을 훈련할 때는 손실 함수가 올바르게 정의되어 있는지 확인하는 것이 매우 중요해요.
이 경우 모델은 두 가지 출력을 생성해요: 알파벳에 대한 예측과 문자에 대한 예측이에요. 각각에 대해 정답 레이블이 있으며, 이를 사용해 두 개의 개별 손실을 계산할 수 있어요. 하나는 잘못된 알파벳 분류로 인한 손실, 다른 하나는 잘못된 문자 분류로 인한 손실이에요. 두 경우 모두 다중 클래스 분류 작업을 다루므로, 매번 Cross-Entropy 손실을 적용할 수 있어요.
하지만 경사 하강법은 한 번에 하나의 손실 함수만 최적화할 수 있어요. 따라서 총 손실을 알파벳 손실과 문자 손실의 합으로 정의할 거예요.
이 연습은 강의의 일부입니다
PyTorch로 배우는 Intermediate Deep Learning
연습 안내
- 알파벳 분류 손실을 계산해
loss_alpha에 할당하세요. - 문자 분류 손실을 계산해
loss_char에 할당하세요. - 두 부분 손실의 합을 총 손실로 계산해
loss에 할당하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
net = Net()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.05)
for epoch in range(1):
for images, labels_alpha, labels_char in dataloader_train:
optimizer.zero_grad()
outputs_alpha, outputs_char = net(images)
# Compute alphabet classification loss
loss_alpha = ____
# Compute character classification loss
loss_char = ____
# Compute total loss
loss = ____
loss.backward()
optimizer.step()