Keras GAN批量训练

3
我已经查看了一些代码/教程(教程:12),用于在Keras中实现GAN。
两者都使用以下批量训练方法:
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行),他们循环所有的epochs,但是对于每个epoch,只训练一个batch。据我所知,对于每个epoch,我们应该训练多个batches,以便遍历整个数据集。例如,如果我们有100个样本和一个批大小为10,则对于每个epoch,我们训练10批大小为10的数据。为什么在这个代码中,他们每个epoch只训练一个批次呢?抱歉如果这是一个基本问题; 我对机器学习还很陌生。
1个回答

1
当你使用GAN进行训练时,与普通神经网络训练相比,有几个不同之处。
  1. 你的输入数据会随着时间变化。生成器网络产生的人造图像在网络权重每次更新时都会发生变化。
  2. 你必须同时训练两个网络。如果你在大量数据上训练了鉴别器,然后再更新生成器是没有意义的。因为这会改变鉴别器学习的数据分布。因此,你可能希望频繁地更新两个网络。所以最好每个批次都更新两个网络。
我不知道为什么他们把这个更新称为一个时代,我想你可能会对这个命名持不同意见。但要记住,当训练数据固定时,时代和批次是有意义的。在这种情况下,它并不固定,所以也许他们只是称之为时代,因为缺乏更好的词汇。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接