더북(TheBook)

그럼 다시 한번 앞에서 작성한 GAN 코드를 살펴보며 GAN이 어떻게 동작하는지 살펴보겠습니다. 앞에서 판별자를 학습시키지 않는다고 말씀드렸는데, 그 이유가 바로 여기에 나옵니다.

discriminator.trainable = False   # 판별자를 더 이상 학습시키지 않습니다.
gan_input = Input(shape=(100,))
x = generator(gan_input)          # 노이즈값을 넣어서 새로운 그림을 생성한 후 x에 넣습니다.
gan_output = discriminator(x)     # 판별자가 x를 판별하도록 합니다.

앞에서 작성한 GAN 코드를 다시 살펴보면 먼저 판별자가 학습을 하지 못하고 판별만 할 수 있도록 학습을 멈추고, 노이즈값이 입력하여 그림을 생성합니다. 그런 다음 판별자가 판별한 결과(gan_output)를 보여줍니다.

여기까지가 바로 적대적 생성 신경망을 학습시키는 과정이었습니다. 긴 과정이었죠? 그러면 이제 우리가 만든 신경망이 그림을 잘 생성하는지 직접 눈으로 살펴볼 차례입니다.

if e == 1 or e % 1000 == 0:

각 에포크별로 훈련을 잘 하는지 살펴봅시다. 첫 번째 에포크(e == 1)와 1000, 2000, 3000, 4000, 5000번째 에포크(e % 1000 == 0)일 때 생성자가 만든 그림을 출력합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.