더북(TheBook)

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을 사용합니다.

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