// The discriminator wants to label the true samples as valid (ones) and
// the generated images as fake (zeros)
valid_y = np.array([1] * half_batch + [0] * half_batch)
// Train the discriminator
d_loss = self.discriminator.train_on_batch(imgs_x, valid_y)
After Change
X_train = (X_train.astype(np.float32) - 127.5) / 127.5
X_train = np.expand_dims(X_train, axis=3)
half_batch = int(batch_size / 2)
for epoch in range(epochs):
// ---------------------
// Train Discriminator
// ---------------------
// Select a random half batch of images
idx = np.random.randint(0, X_train.shape[0], half_batch)
imgs = X_train[idx]
// Sample noise and generate a half batch of new images
noise = np.random.normal(0, 1, (half_batch, 100))
gen_imgs = self.generator.predict(noise)
// Train the discriminator (real classified as ones and generated as zeros)
d_loss_real = self.discriminator.train_on_batch(imgs, np.ones((half_batch, 1)))
d_loss_fake = self.discriminator.train_on_batch(gen_imgs, np.zeros((half_batch, 1)))d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)
// ---------------------
// Train Generator
// ---------------------