【笔记】Wgan-Gp 判别器损失:损失为正值或者负值均可,表示的真数据和假数据的相对分布位置,收敛到0为目标;优化器使用Adam,并没有使用默认参数;Wgan使用RMSProp做优化

附加:Wgan

Wgan-Gp:

WGAN-GPWGAN-Div都是基于Wasserstein距离的GAN改进算法。 WGAN-GPWGAN-Div都保留了WGAN的一些特点,如使用Wasserstein距离来衡量生成器判别器之间的距离,使用weight clipping等。 不同之处在于,WGAN-GP使用了梯度惩罚来强制判别器满足Lipschitz连续性,而WGAN-Div则使用了一种新的多样性评价指标——divergence来衡量生成器数据之间的距离。 以下是WGAN-Div的损失函数PyTorch形式代码: ```python import torch import torch.nn as nn # 定义WGAN-Div的判别器损失函数 def d_loss(real_data, fake_data, discriminator, generator, device): # 生成器产生的样本 generated_data = generator(torch.randn(real_data.size(0), 100).to(device)) # 判别器数据的输出 d_output_real = discriminator(real_data) # 判别器对生成数据的输出 d_output_fake = discriminator(generated_data.detach()) # WGAN-Div的判别器损失函数 loss_d = -torch.mean(d_output_real) + torch.mean(torch.exp(d_output_fake - 1)) return loss_d # 定义WGAN-Div的生成器损失函数 def g_loss(real_data, generator, discriminator, device): # 生成器产生的样本 generated_data = generator(torch.randn(real_data.size(0), 100).to(device)) # 判别器对生成数据的输出 d_output_fake = discriminator(generated_data) # WGAN-Div的生成器损失函数 loss_g = -torch.mean(torch.exp(d_output_fake - 1)) return loss_g ``` 其中,`d_loss`为WGAN-Div的判别器损失函数,`g_loss`为WGAN-Div的生成器损失函数。实现时需要定义判别器生成器将其传入损失函数中,同时需要指定设备(如`device=torch.device('cuda:0')`)。
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的探索之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值