더북(TheBook)

적대적 생성 신경망은 생성자와 판별자가 서로 이기기 위해, 마치 적대적으로 학습해 나가는 모습입니다. 생성자는 생성자대로 판별자를 속이기 위해 점점 더 정교한 손글씨를 작성하고, 판별자는 판별자대로 생성자가 만든 가짜 손글씨를 판별하기 위해 점점 더 성능을 높여가는 것이죠. 이처럼 판별자가 더 이상 구별하지 못할 정도로 진짜 같은 가짜 그림을 생성자가 생성해 내는 것이 바로 적대적 생성 신경망입니다.

def create_gan(discriminator, generator):

create_gan이라는 함수를 만드는 코드입니다. 여기에서 괄호 안에 두 값이 있는 이유는 이 함수를 호출하려면 재료가 2개 필요하다는 의미입니다. 여기에서 사용하는 재료는 바로 판별자와 생성자입니다. 이를 통해 gan을 만들기 위해서는 판별자와 생성자 둘 다 필요한 것을 볼 수 있습니다.

discriminator.trainable = False

판별자가 학습을 하지 못하도록 막아줍니다. 왜 그런지 그 이유는 gan 모델을 훈련시키는 과정을 18.8절에서 설명하겠습니다.

gan_input = Input(shape=(100,))

우리가 앞으로 만든 적대적 생성 신경망인 gan에 입력할 데이터의 모습을 정하는 코드입니다. 입력할 데이터의 형태를 만들어 줍니다. 입력하는 값은 바로 100개의 값으로 이루어진 데이터입니다. 그렇다면 콤마(,) 뒷부분의 값이 비어 있는 이유는 총 데이터의 개수를 넣기 위함이며, 이렇게 값을 비워 두면 실제 데이터의 개수(여기에서는 10,000개)를 자동으로 넣어줍니다(shape=(100,)).

TIP

Input( )은 모델에 값을 넣어줄 때 사용하는 명령어입니다.

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