pytorch GAN模型可以使用一个优化器吗?

ymdaylpp  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(156)

我看过很多GAN教程,它们都使用了两个独立的优化器,分别用于生成器和鉴别器。

import torch.nn as nn

class Generator(nn.Module):
    def __init__(self):
        pass
    
    def forward(self, x):
        pass

class Discriminator(nn.Module):
    def __init__(self):
        pass
    
    def forward(self, x):
        pass
G = Generator()
D = Discriminator()

optimizerG = torch.optim.Adam(G.parameters())
optimizerD = torch.optim.Adam(D.parameters())

但是,我们能不能把这些优化器合并成一个,如下所示?有什么缺点吗?
一个二个一个一个

mcdcgff0

mcdcgff01#

在优化整个GAN损耗函数方面,发生器和鉴别器具有正好相反的目标(生成器想要最大化它,而鉴别器想要最小化它,导致它们在反向传播时相反的梯度)。所以当你把它们放在一个优化器中时,每当一个的参数接近最优时,另一个的参数就离最优更远。最后,没有一个得到优化。

  • (最近我也有同样的疑问,以上只是我的一些幼稚的理解。这是我加入这个社区不久以来的第一次回答。如果我的英语不太容易理解,我很抱歉,因为它是我的第二语言。希望这个回答对你有帮助!)*

相关问题