시작하기무료로 시작하기

GAN 모델 학습하기

PyBooks 팀은 Generative Adversarial Network (GAN)을 사용해 텍스트 생성기를 구축하는 데 큰 진전을 이뤘습니다. 생성기와 판별기 네트워크를 성공적으로 정의했으니, 이제 학습할 차례입니다. 마지막 단계로는 가짜 데이터를 생성하여 실제 데이터와 비교해 GAN이 얼마나 잘 학습했는지 확인합니다. 입력으로 텐서를 사용했고, 출력은 입력 텐서를 닮도록 시도합니다. 이렇게 만든 합성 데이터는 텍스트 데이터와 동일한 특성 간 관계를 가지므로, PyBooks 팀은 이를 텍스트 분석에 활용할 수 있습니다.

생성기와 판별기는 각각 generatordiscriminator로 초기화되어 저장되어 있습니다.

이 연습 문제에서는 다음 변수가 초기화되어 있습니다:

  • 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()
코드 편집 및 실행