Keras GAN批培训

时间:2018-06-27 16:06:25

标签: python tensorflow keras generative-adversarial-network

我看过一些在Keras中实现GAN的代码/教程(教程:12)。

两个都按以下方式进行批量培训:

for epoch in range(epochs):
    # ---------------------
    # Train Discriminator
    # ---------------------
    # Select a random batch of images

    # Generate a batch of new images

    # Train the discriminator

    # ---------------------
    # Train Generator
    # ---------------------

在上面的代码(取自(2)中的第92行)中,它们循环遍历所有时期,但随后对于每个时期,只训练一批。据我了解,对于每个时代,我们都应该进行很多批次的训练;这样我们就可以遍历整个数据集。例如,如果我们有100个样本,批次大小为10,那么对于每个时期,我们将训练10个大小为10的批次。为什么在此代码中,它们对于每个时期只对单个批次进行训练?抱歉,这是一个基本问题。我是机器学习的新手。

1 个答案:

答案 0 :(得分:1)

当您执行GAN时,正常的神经网络训练几乎没有什么改变。

  1. 您的输入数据会随着时间变化。生成器网络中的人工图像在每次更新网络中的权重时都会发生变化。
  2. 您必须同时训练两个网络。如果随后更新生成器,则在大量数据上训练鉴别器是没有意义的。因为这改变了鉴别者从中学习的数据分布。因此,您可能需要经常更新两个网络。因此,最好每批更新两个网络。

我不知道他们为什么将此更新称为一个纪元,我想您可能会不同意命名。但是请记住,固定训练数据后,时期和批次具有意义。在这种情况下,它不是,所以也许他们称其为epoch是因为他们缺少更好的词。