더북(TheBook)

또한, 생성자의 활성화 함수로는 ReLU() 함수를 쓰고 판별자로 넘겨주기 직전에는 tanh() 함수를 쓰고 있습니다. tanh() 함수를 쓰면 출력되는 값을 -1~1 사이로 맞출 수 있습니다. 판별자에 입력될 MNIST 손글씨의 픽셀 범위도 -1~1로 맞추면 판별 조건이 모두 갖추어집니다.

지금까지 설명한 내용을 코드로 정리하면 다음과 같습니다.

generator = Sequential() # 모델 이름을 generator로 정하고 Sequential() 함수를 호출
generator.add(Dense(128*7*7, input_dim=100, activation=LeakyReLU(0.2))) ----- ➊
generator.add(BatchNormalization() ----- ➋
generator.add(Reshape((7, 7, 128))) ----- ➌
generator.add(UpSampling2D()) ----- ➍
generator.add(Conv2D(64, kernel_size=5, padding='same')) ----- ➎
generator.add(BatchNormalization()) ----- ➏
generator.add(Activation(LeakyReLU(0.2))) ----- ➐
generator.add(UpSampling2D()) ----- ➑
generator.add(Conv2D(1, kernel_size=5, padding='same', activation='tanh')) ----- ➒

먼저 부터 차례로 확인해 보겠습니다.

generator.add(Dense(128*7*7, input_dim=100, activation=LeakyReLU(0.2))) ----- ➊
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.