不明白这两句的意思,老师能再解释一下吗?
来源:6-9 编写训练神经网络的方法(下)
慕粉3338926
2018-08-15
input_batch = np.concatenate((input_batch, generated_images))
output_batch = [1] * BATCH_SIZE + [0] * BATCH_SIZE
写回答
1回答
-
Oscar
2018-11-22
假如 BATCH_SIZE 是 4,那么上面的 output_batch 就会是这样:
[1,1,1,1,0,0,0,0]
为什么是 BATCH_SIZE 个 1 后接 BATCH_SIZE 个 0 呢 ?
这是因为:
1 代表:100% 是真实的图片
0 代表:不可能是真实的图片
生成网络(生成器) G 的目标就是尽量生成真实的图片去欺骗判别网络D。而判别网络(判别器)D 的目标就是尽量把 G 生成的图片和真实的图片分别开来。这样,G 和 D 构成了一个动态的“博弈过程”。
看代码里面,这句前面有:
input_batch = np.concatenate((input_batch, generated_images))
其中 np.concatenate 的两个参数 input_batch 和 generated_images 分别是实际的图片和生成器生成的“伪图片”。这两个输入数据的长度都是 BATCH_SIZE :
# 实际的图片数据 input_batch = input_data[index * BATCH_SIZE : (index + 1) * BATCH_SIZE] # 连续型均匀分布的随机数据(噪声) random_data = np.random.uniform(-1, 1, size=(BATCH_SIZE, 100)) # 生成器 生成的图片数据 generated_images = g.predict(random_data, verbose=0)
因此 BATCH_SIZE 个 1 就是对应实际的图片数据,BATCH_SIZE 个 0 就是对应生成器生成的图片数据。
关于 GAN 的具体原理,请参看这篇知乎文章:GAN学习指南:从原理入门到制作生成Demo
train_on_batch 的 API : https://www.tensorflow.org/api_docs/python/tf/keras/models/Sequential
00
相似问题