더북(TheBook)

이제 이것을 코드로 만들겠습니다.

ginput = Input(shape=(100,)) ----- ➊
dis_output = discriminator(generator(ginput)) ----- ➋
gan = Model(ginput, dis_output) ----- ➌
gan.compile(loss='binary_crossentropy', optimizer='adam') ----- ➍

은 랜덤한 100개의 벡터를 케라스의 Input() 함수에 집어넣어 생성자에 입력할 ginput을 만드는 과정입니다.

는 생성자 모델 generator()에서 만든 ginput을 입력합니다. 그 결과 출력되는 28×28 크기의 이미지가 그대로 판별자 모델 discriminator()의 입력 값으로 들어갑니다. 판별자는 이 입력 값을 가지고 참과 거짓을 판별하는데, 그 결과를 dis_output이라고 하겠습니다.

에서는 케라스의 Model() 함수를 이용해 ginput 값과 에서 구한 dis_output 값을 넣어 gan이라는 이름의 새로운 모델을 만듭니다.

에서는 참과 거짓을 구분하는 이진 로스 함수(binary_crossentropy)와 최적화 함수(adam)를 사용해 에서 만든 gan 모델을 컴파일합니다.

드디어 생성자와 판별자를 연결하는 gan 모델까지 만들었습니다. 이제 지금까지 모든 과정을 실행할 함수를 만들 차례입니다.

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