batch_size는 한 번에 몇 개의 실제 이미지와 몇 개의 가상 이미지를 판별자에 넣을지 결정하는 변수입니다. 먼저 batch_size만큼 MNIST 손글씨 이미지를 랜덤하게 불러와 판별자에 집어넣는 과정은 다음과 같습니다. 실제 이미지를 입력했으므로 ‘모두 참(1)’이라는 레이블을 붙입니다.
np.ones(( , 1)) ----- ➊ = np.random. (0, .shape[0], ) ----- ➋ = [ ]----- ➌ = .train_on_batch( , ) ----- ➍=
➊에서는 ‘모두 참(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에 놓아 준비를 마칩니다.