Discriminator 손실
이제 discriminator의 손실을 정의해 보겠습니다. Discriminator의 역할은 이미지가 실제인지 가짜인지 분류하는 것입니다. 따라서 generator의 출력물을 실제(레이블 1)로 분류하거나 실제 이미지를 가짜(레이블 0)로 분류하면 손실이 발생합니다.
Discriminator 손실을 계산하는 disc_loss() 함수를 정의하세요. 이 함수는 다섯 가지 인수를 받습니다:
gen: generator 모델disc: discriminator 모델real: 학습 데이터에서 가져온 실제 이미지 샘플num_images: 배치의 이미지 개수z_dim: 입력 무작위 노이즈의 크기
이 연습은 강의의 일부입니다
PyTorch로 배우는 이미지 딥러닝
연습 안내
- Discriminator를 사용해
fake이미지를 분류하고 예측 값을disc_pred_fake에 할당하세요. - 가짜 손실 항은 가짜 이미지에 대한 discriminator의 예측과, 같은 모양의 0 텐서를
criterion에 전달해 계산하세요. - Discriminator를 사용해
real이미지를 분류하고 예측 값을disc_pred_real에 할당하세요. - 실제 손실 항은 실제 이미지에 대한 discriminator의 예측과, 같은 모양의 1 텐서를
criterion에 전달해 계산하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def disc_loss(gen, disc, real, num_images, z_dim):
criterion = nn.BCEWithLogitsLoss()
noise = torch.randn(num_images, z_dim)
fake = gen(noise)
# Get discriminator's predictions for fake images
disc_pred_fake = ____
# Calculate the fake loss component
fake_loss = ____
# Get discriminator's predictions for real images
disc_pred_real = ____
# Calculate the real loss component
real_loss = ____
disc_loss = (real_loss + fake_loss) / 2
return disc_loss