玩完PyTorch DCGAN面孔教程后,我开始使用自己的数据集,该数据集由大小为1x32x32(通道,高度,宽度)的图像组成。
现在,我确实应用了此存储库中的大部分内容:https://github.com/soumith/ganhacks
但是目前我被困住了。
我以此为依据来选择是训练生成器(G)还是鉴别器(D)。
if i > 1:
if D_G_z1 < 0.5:
train_G = True
train_D = False
else:
train_D = True
train_G = False
其中i是当前批次号,train_D
和train_G
在批次1上设置为True。 D_G_z1
是D(G(x))。
我希望一旦训练了D并且D(G(x))= 0.5,D将停止训练,G将开始训练以改善所生成图像的真实性,等等。现在D和G在进行训练时满足条件。
但是,G的损失在5个历元后停留在0.7,并且似乎在1k历时没有变化(我没有尝试更多)。更改G的学习速率,或者通过更改每个ConvTranspose2d层的通道数量来使G变得更多/更少复杂,也无济于事。
现在最好的方法是什么?任何意见,将不胜感激。
可在此处找到代码:https://github.com/deKeijzer/SRON-DCGAN/blob/master/notebooks/ExoGAN_v1.ipynb
TLDR:发电机损耗固定在0.7,不再变化。它也没有“学习” X的良好表示。