■ x = generator(gan_input)
이제 생성자 신경망(generator)에게 바로 윗줄에서 작성한 픽셀 100개의 값과 데이터의 전체 수(Input(shape=(100,)))만큼 데이터를 넣는 모습입니다. 이 픽셀 100개의 값은 어떤 값일까요? 앞에서 잠깐 언급한 노이즈값입니다(노이즈값을 생성하는 코드는 뒷부분에 나옵니다).
이렇게 데이터를 넣으면 생성자가 만든 새로운 그림들이 x 변수에 저장됩니다.
■ gan_output = discriminator(x)
바로 다음 줄에서 만들 적대적 생성 신경망 gan의 결괏값 데이터를 정의해 주는 코드로, 이 결괏값 데이터는 바로 판별자가 생성자가 만든 그림(x)을 보고 판단한 결과입니다. 그 판단 결과는 진짜 혹은 가짜 둘 중 하나로 나오겠죠?
■ gan = Model(inputs=gan_input, outputs=gan_output)
드디어 적대적 생성 신경망 gan 모델을 만들어 볼 차례입니다. 생각보다 간단하죠? 이 신경망의 입력값(inputs=gan_input)은 바로 생성자 신경망이 만든 그림입니다. 그리고 출력값(outputs=gan_output)은 판별자 신경망이 판단한 결과입니다.
■ gan.compile(loss='binary_crossentropy', optimizer='adam')
신경망의 오차 값을 줄이기 위한 방법입니다. 출력값의 모습 자체가 맞는지 틀린지 둘 중 하나로 나오기 때문에 이진 분류에서 사용하는 binary_crossentropy를 사용하며, 옵티마이저는 adam을 사용합니다.