GAN 모델 학습하기
PyBooks 팀은 Generative Adversarial Network (GAN)을 사용해 텍스트 생성기를 구축하는 데 큰 진전을 이뤘습니다. 생성기와 판별기 네트워크를 성공적으로 정의했으니, 이제 학습할 차례입니다. 마지막 단계로는 가짜 데이터를 생성하여 실제 데이터와 비교해 GAN이 얼마나 잘 학습했는지 확인합니다. 입력으로 텐서를 사용했고, 출력은 입력 텐서를 닮도록 시도합니다. 이렇게 만든 합성 데이터는 텍스트 데이터와 동일한 특성 간 관계를 가지므로, PyBooks 팀은 이를 텍스트 분석에 활용할 수 있습니다.
생성기와 판별기는 각각 generator와 discriminator로 초기화되어 저장되어 있습니다.
이 연습 문제에서는 다음 변수가 초기화되어 있습니다:
seq_length = 5: 각 합성 데이터 시퀀스의 길이num_sequences = 100: 생성할 시퀀스의 총 개수num_epochs = 50: 데이터셋 전체를 반복 학습하는 횟수print_every = 10: 출력 빈도, 10 에포크마다 결과를 표시
이 연습은 강의의 일부입니다
PyTorch로 배우는 텍스트 딥러닝
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Define the loss function and optimizer
criterion = nn.____()
optimizer_gen = ____(generator.parameters(), lr=0.001)
optimizer_disc = ____(discriminator.parameters(), lr=0.001)
for epoch in range(num_epochs):
for real_data in data:
# Unsqueezing real_data and prevent gradient recalculations
real_data = real_data.____(0)
noise = torch.rand((1, seq_length))
fake_data = generator(noise)
disc_real = discriminator(real_data)
disc_fake = discriminator(fake_data.____())
loss_disc = criterion(disc_real, torch.ones_like(disc_real)) + criterion(disc_fake, torch.zeros_like(disc_fake))
optimizer_disc.zero_grad()
loss_disc.backward()
optimizer_disc.step()