【问题标题】:Wasserstein GAN critic training ambiguityWasserstein GAN 评论家训练歧义
【发布时间】:2018-11-20 20:58:56
【问题描述】:

我正在运行基于 DCGAN 的 GAN,并且正在试验 WGAN,但对如何训练 WGAN 有点困惑。

在官方Wasserstein GAN PyTorch implementation 中,据说每次生成器训练对鉴别器/批评者进行Diters(通常为 5)次。

这是否意味着批评者/鉴别器在Diters 批次整个数据集 Diters 次上训练?如果我没记错的话,官方实现建议判别器/批评者在 整个数据集 Diters 次上进行训练,但 WGAN 的其他实现(在 PyTorch 和 TensorFlow 等中)则相反。

哪个是正确的? The WGAN paper(至少对我而言)表示它是 Ditersbatches。对整个数据集的训练显然要慢几个数量级。

提前致谢!

【问题讨论】:

    标签: python-3.x tensorflow machine-learning deep-learning pytorch


    【解决方案1】:

    正确的做法是将迭代视为批处理。 在原始的paper 中,对于批评家/判别器的每次迭代,他们都会对一批大小为m 的真实数据和一批大小为m 的先前样本p(z) 进行采样以进行工作。在通过Diters 迭代训练critic 之后,他们训练生成器,该生成器也从p(z) 的一批先前样本的采样开始。 因此,每次迭代都在处理一个批次。

    official implementation 中也发生了这种情况。可能令人困惑的是,他们使用变量名称niter 来表示训练模型的 epoch 数。尽管他们使用不同的方案在162-166 行设置Diters

    # train the discriminator Diters times
        if gen_iterations < 25 or gen_iterations % 500 == 0:
            Diters = 100
        else:
            Diters = opt.Diters
    

    正如论文中所说,他们正在通过Diters 批次训练评论家。

    【讨论】:

      【解决方案2】:

      WGAN 的这种实现将其显示为生成器每次运行的鉴别器的 Diter 批次 - https://github.com/shayneobrien/generative-models/blob/74fbe414f81eaed29274e273f1fb6128abdb0ff5/src/w_gan.py#L88

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-06
        • 2020-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多