더북(TheBook)

batch_size는 한 번에 몇 개의 실제 이미지와 몇 개의 가상 이미지를 판별자에 넣을지 결정하는 변수입니다. 먼저 batch_size만큼 MNIST 손글씨 이미지를 랜덤하게 불러와 판별자에 집어넣는 과정은 다음과 같습니다. 실제 이미지를 입력했으므로 ‘모두 참(1)’이라는 레이블을 붙입니다.

true = np.ones((batch_size, 1)) ----- ➊
idx = np.random.randint(0, X_train.shape[0], batch_size) ----- ➋
imgs = X_train[idx]----- ➌
d_loss_real = discriminator.train_on_batch(imgs, true) ----- ➍

에서는 ‘모두 참(1)’이라는 레이블 값을 가진 배열을 만듭니다. batch_size 길이만큼 만들어 에서 사용합니다.

에서는 넘파이 라이브러리의 random() 함수를 사용해서 실제 이미지를 랜덤하게 선택해 불러옵니다. np.random.randint(a, b, c)a부터 b까지 숫자 중 하나를 랜덤하게 선택해 가져오는 과정을 c번 반복하라는 의미입니다. 0부터 X_train 개수 사이의 숫자를 랜덤하게 선택해 batch_size만큼 반복해서 가져오게 했습니다.

에서는 에서 선택된 숫자에 해당하는 이미지를 불러옵니다.

에서는 판별자 모델에 train_on_batch() 함수를 써서 판별을 시작합니다. train_on_batch(x, y) 함수는 입력 값(x)과 레이블(y)을 받아서 딱 한 번 학습을 실시해 모델을 업데이트합니다. 에서 만든 이미지를 x에 넣고 에서 만든 배열을 y에 놓아 준비를 마칩니다.

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