훈련 루프
마침내 모델 아키텍처와 손실 함수를 정의하느라 고생하신 보람이 옵니다. 이제 훈련할 차례예요! 여러분의 할 일은 GAN 훈련 루프를 구현하고 실행하는 것입니다. 참고: 실행 시간이 길어지는 것을 막기 위해 첫 번째 배치 이후에 break 문이 들어가 있습니다.
두 옵티마이저 disc_opt와 gen_opt는 Adam() 옵티마이저로 초기화되어 있습니다. 앞에서 정의한 손실 계산 함수 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