1

在玩过 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一批中设置为 True。D_G_z1是 D(G(x))。

我希望一旦 D 被训练并且 D(G(x)) = 0.5,D 将停止训练,G 将开始训练以提高生成图像的真实感等。现在 D 和 G 在条件满足时进行训练遇见了。

但是,G 的损失在 5 个 epoch 后停留在 0.7,并且似乎不会随着 1k epochs 而改变(我没有尝试更多)。改变 G 的学习率,或者通过改变每个 ConvTranspose2d 层的通道数量来增加/减少 G 的复杂性也无济于事。

现在最好的方法是什么?任何意见,将不胜感激。

代码可以在这里找到:https ://github.com/deKeijzer/SRON-DCGAN/blob/master/notebooks/ExoGAN_v1.ipynb

TLDR:发电机损耗停留在 0.7,不再变化。它也没有“学习”到 X 的良好表示。

4

0 回答 0