wgan的实现的伪代码,和原理,dcgan,模型坍塌 em距离 js kl散

原文地址 

https://blog.csdn.net/Keep_Trying_Go/article/details/130471766

伪代码详细看这个, 

特别注意点:gan(x+nosize) 生成器 是 输入+噪声   ,而不是全部噪声生成的

特别注意点:gan(x+nosize) 生成器 是 输入+噪声   ,而不是全部噪声生成的

for epoch in range(NUM_EPOCHS):
    for batch_idx,(data,_) in enumerate(dataLoader):
        data = data.to(device)
        cur_batch_size = data.shape[0]
 
        #Train: Critic : max[critic(real)] - E[critic(fake)]
        loss_critic = 0
        for _ in range(CRITIC_ITERATIONS):
            noise = torch.randn(size = (cur_batch_size,Z_DIM,1,1),device=device)
            fake_img = gen(noise)
            #使用reshape主要是将最后的维度从[1,1,1,1]=>[1]
            critic_real = critic(data).reshape(-1)
            critic_fake = critic(fake_img).reshape(-1)
 
            loss_critic = (torch.mean(critic_real)- torch.mean(critic_fake))
            opt_critic.zero_grad()
            loss_critic.backward(retain_graph=True)
            opt_critic.step()
 
            #clip critic weight between -0.01 , 0.01
            for p in critic.parameters():
                p.data.clamp_(-WEIGHT_CLIP,WEIGHT_CLIP)
 
        #将维度从[1,1,1,1]=>[1]
        gen_fake = critic(fake_img).reshape(-1)
        #max E[critic(gen_fake)] <-> min -E[critic(gen_fake)]
        loss_gen = -torch.mean(gen_fake)
        opt_gen.zero_grad()
        loss_gen.backward()
        opt_gen.step()

WGAN主要解决的问题
引入了一种新的分布距离度量方法:Wasserstein距离,也称为(Earth-Mover Distance)简称EM距离,表示从一个分布变换到另一个分布的最小代价。
定义了一种称为Wasserstein GAN的GAN形式,该形式使EM距离的合理有效近似最小化,并且本文从理论上证明了相应的优化问题是合理的。
WGAN解决了GANs的主要训练问题。特别是,训练WGAN不需要维护在鉴别器和生成器的训练中保持谨慎的平衡,并且也不需要对网络架构进行仔细的设计。模式在GANs中典型的下降现象也显著减少。WGAN最引人注目的实际好处之一是能够通过训练鉴别器进行运算来连续地估计EM距离。绘制这些学习曲线不仅对调试和超参数搜索,但也与观察到的样品质量。

3.不同距离的度量方式
提示:下面的一些公式可能看起来很枯燥无味,但是如果读者可以坚持读完,将是不小的收获,而且下面给出的公式还是只是论文中推导公式的冰山一角。

(1)方式一


(2)方式二

(3)方式三

(4)方式四

原理

        DCGAN

DCGAN论文的作者提出了不使用Pooling层,多使用Batch Normalization层,不使用全连接层,生成网络中激活函数应使用ReLU,最后一层使用tanh激活函数,判别网络激活函数应使用LeakReLU等一系列经验性的训练技巧。

        但是上面的技巧仅仅能在一定程度上避免出现训练不稳定的现象,并没有从理论上解释为什么会出现训练困难以及如何解决训练不稳定的问题。
 

      模型崩塌     

 模型崩塌(Mode Collapse)是指模型生成的样本单一,多样性很差的现象。

        由于判别器只能鉴别单个样本是否为真实样本分布,并没有对多样性进行显式约束,导致生成模型可能倾向于生成真实分布的部分区间中的少量高质量样本,以此来在判别器中获得较高的概率值,而不会学习到全部的真实分布。

        模式崩塌在GAN的训练过程中比较常见。在训练过程中,通过可视化生成网络的样本,可以看到,生成的图片种类非常单一,生成网络总是倾向于生成某一种单一风格的样本图像

WGAN主要解决的问题


引入了一种新的分布距离度量方法:Wasserstein距离,也称为(Earth-Mover Distance)简称EM距离,表示从一个分布变换到另一个分布的最小代价。
定义了一种称为Wasserstein GAN的GAN形式,该形式使EM距离的合理有效近似最小化,并且本文从理论上证明了相应的优化问题是合理的。
WGAN解决了GANs的主要训练问题。特别是,训练WGAN不需要维护在鉴别器和生成器的训练中保持谨慎的平衡,并且也不需要对网络架构进行仔细的设计。模式在GANs中典型的下降现象也显著减少。WGAN最引人注目的实际好处之一是能够通过训练鉴别器进行运算来连续地估计EM距离。绘制这些学习曲线不仅对调试和超参数搜索,但也与观察到的样品质量。
————————————————

 
                        
原文链接:https://blog.csdn.net/Keep_Trying_Go/article/details/130471766

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值