output_batch = [1] * BATCH_SIZE + [0] * BATCH_SIZE中,[0]和[1]分别代表什么意思?希望老师可以讲解一下

来源:6-9 编写训练神经网络的方法(下)

梦人

2018-06-09

 output_batch = [1] * BATCH_SIZE + [0] * BATCH_SIZE中,[0]和[1]分别代表什么意思?希望老师可以讲解一下,在6-9节中

写回答

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

0
1
梦人
非常感谢!
2018-12-26
共1条回复

基于Python玩转人工智能最火框架 TensorFlow应用实践

机器学习入门,打牢TensorFlow框架应用是关键!

2214 学习 · 688 问题

查看课程