我正在运行一个基于DCGAN的GAN,正在试验WGAN,但对如何训练WGAN感到有些困惑 .
在官方Wasserstein GAN PyTorch implementation中,据说每个发电机培训的鉴别人员/评论员都经过培训 Diters
(通常是5次) .
这是否意味着评论家/鉴别者在 Diters
批次或整个数据集 Diters
次?如果我没有弄错的话,官方的实施表明鉴别者/评论家在整个数据集上训练了_596169次,但WGAN的其他实现(在PyTorch和TensorFlow等中)却恰恰相反 .
哪个是对的? The WGAN paper(至少对我而言),表示它是 Diters
批次 . 整个数据集的训练显然要慢几个数量级 .
提前致谢!
1 回答
正确的是将迭代视为批处理 . 在原始paper中,对于批评者/鉴别者的每次迭代,他们正在对一批大小
m
的实际数据和一批大小m
的先前样本p(z)
进行抽样 . 在批评者经过Diters
次迭代训练之后,他们训练发电机,这也是通过对一批先前的样品p(z)
进行采样而开始的 . 因此,每次迭代都在处理批处理 .在_596178中,这也正在发生 . 可能令人困惑的是,他们使用变量名称
niter
来表示训练模型的时期数 . 虽然他们使用不同的方案在行162 -166处设置Diters
:正如文中所述,他们正在批评批评者 .