3

我查看了一些用于在 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 行),它们循环遍历所有 epoch,但是对于每个 epoch,只训练一个批次。据我了解,对于每个 epoch,我们应该训练很多批次;这样我们就可以遍历整个数据集。例如,如果我们有 100 个样本,批量大小为 10,那么对于每个 epoch,我们训练 10 个大小为 10 的批次。为什么在这段代码中,他们只在每个 epoch 上训练一个批次?对不起,如果这是一个基本问题;我对机器学习很陌生。

4

1 回答 1

1

当你做 GAN 时,与正常的神经网络训练相比,几乎没有什么变化。

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

我不知道他们为什么称这个更新为一个时代,我想你可能不同意这个命名。但请记住,当训练数据固定时,epoch 和 batch 才有意义。在这种情况下它不是,所以也许他们只是称之为时代,因为他们缺乏更好的词。

于 2018-06-27T19:54:45.847 回答