시작하기무료로 시작하기

훈련 루프

마침내 모델 아키텍처와 손실 함수를 정의하느라 고생하신 보람이 옵니다. 이제 훈련할 차례예요! 여러분의 할 일은 GAN 훈련 루프를 구현하고 실행하는 것입니다. 참고: 실행 시간이 길어지는 것을 막기 위해 첫 번째 배치 이후에 break 문이 들어가 있습니다.

두 옵티마이저 disc_optgen_optAdam() 옵티마이저로 초기화되어 있습니다. 앞에서 정의한 손실 계산 함수 gen_loss()disc_loss()를 그대로 사용할 수 있어요. 또한 dataloader도 준비되어 있습니다.

다음을 기억하세요:

  • disc_loss()의 인자는 순서대로 gen, disc, real, cur_batch_size, z_dim입니다.
  • gen_loss()의 인자는 순서대로 gen, disc, cur_batch_size, z_dim입니다.

이 연습은 강의의 일부입니다

PyTorch로 배우는 이미지 딥러닝

강의 보기

연습 안내

  • 생성기, 판별기, 실제 이미지 샘플, 현재 배치 크기, 그리고 노이즈 크기 16을 이 순서로 disc_loss()에 전달해 판별기 손실을 계산하고, 결과를 d_loss에 할당하세요.
  • d_loss를 사용해 그래디언트를 계산하세요.
  • 생성기, 판별기, 현재 배치 크기, 그리고 노이즈 크기 16을 이 순서로 gen_loss()에 전달해 생성기 손실을 계산하고, 결과를 g_loss에 할당하세요.
  • g_loss를 사용해 그래디언트를 계산하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

for epoch in range(1):
    for real in dataloader:
        cur_batch_size = len(real)
        
        disc_opt.zero_grad()
        # Calculate discriminator loss
        d_loss = ____
        # Compute gradients
        ____
        disc_opt.step()

        gen_opt.zero_grad()
        # Calculate generator loss
        g_loss = ____
        # Compute generator gradients
        ____
        gen_opt.step()

        print(f"Generator loss: {g_loss}")
        print(f"Discriminator loss: {d_loss}")
        break
코드 편집 및 실행