# Creating GAN # 建立一个GAN网络,GAN由两个神经网络(generator, discriminator)连接而成 generator= build_generator() discriminator= build_discriminator() GAN = build_GAN(discriminator, generator)
for i in range(1, epochs+1): print("Epoch %d" %i)
for _ in tqdm(range(batch_size)): # 生成呈高斯分布的噪声,利用generator,来生成batch_size(128张)图片。每张图片的输入就是一个1*100的噪声矩阵 # Generate fake images from random noiset noise= np.random.normal(0,1, (batch_size, 100)) fake_images = generator.predict(noise)
# Select a random batch of real images from MNIST real_images = X_train[np.random.randint(0, X_train.shape[0], batch_size)]
# Labels for fake and real images # 从Mnist数据集中随机挑选128张真实图片。我们给真实图片标注1,给假图片标注0,然后将256张真假图片混合在一起 label_fake = np.zeros(batch_size) label_real = np.ones(batch_size)
# Concatenate fake and real images X = np.concatenate([fake_images, real_images]) y = np.concatenate([label_fake, label_real])
# Train the discriminator discriminator.trainable=True discriminator.train_on_batch(X, y)
# Train the generator/chained GAN model (with frozen weights in discriminator) discriminator.trainable=False GAN.train_on_batch(noise, label_real)
# Draw generated images every 15 epoches if i == 1or i % 10 == 0: draw_images(generator, i) train_GAN(epochs=400, batch_size=128)