wordpress企业站主题哪个好,新冠目前全国最新情况,郑州发布评论,wordpress 摄影 中文GAN模型网络结构实验效果演化1.GAN1.1网络结构1.2实验结果2.DCGAN2.1网络结构2.2实验结果3.WGAN3.1网络结构3.2实验结果4.WGAN-GP4.1网络结构4.2实验结果5.WGAN-SN5.1网络结构5.2实验结果小结1.GAN
文章#xff1a; https://arxiv.org/pdf/1406.2661.pdf 代码#xff1a; Py…
GAN模型网络结构实验效果演化1.GAN1.1网络结构1.2实验结果2.DCGAN2.1网络结构2.2实验结果3.WGAN3.1网络结构3.2实验结果4.WGAN-GP4.1网络结构4.2实验结果5.WGAN-SN5.1网络结构5.2实验结果小结1.GAN
文章 https://arxiv.org/pdf/1406.2661.pdf 代码 Pylearn2 theano, https://github.com/goodfeli/adversarial
1.1网络结构
多层感知机器没有在文章中找到 G: ReLU, sigmoid D:maxout, dropout
1.2实验结果
1.数据集MNISTthe Toronto Face Database (TFD) CIFAR-10
2.Gaussian Parzen window 拟合样本输出对应的log-likelihood.
3.直接展示了在三个图像集合上的效果最右遍一列显示的是与第二列最相似的训练样本(具体如何衡量相近需要查论文) a) MNISTb) TFD c) CIFAR-10 (fully connected model) d) CIFAR-10 (convolutional discriminatorand “deconvolutional” generator)
训练次数呢 这时候的cifar数据集基本不能看·
2.DCGAN
文章https://arxiv.org/pdf/1511.06434.pdf 代码https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.htmlpytorch 官网DCAGAN教程示例是人脸图像生成
2.1网络结构
P3网络结构表 1.去除所有的poling层 2.DG中都使用batchnorm 3.移除全联接结构 4.G激活函数ReLUTanh(最后一层) 5.D激活函数LeakyReLU(所有层)
2.2实验结果
Lsun–视觉效果300万张图像 Cifar10-分类实验 人脸加减法实验
3.WGAN
文章https://arxiv.org/pdf/1701.07875.pdf 代码https://github.com/martinarjovsky/WassersteinGAN作者github 提供的代码pytorch
3.1网络结构
p9以DCGAN为baseline, baseline 损失使用-logD 技巧 lipschitz约束实现clip D网络参数
3.2实验结果
Lsun-bedromm 稳定性视觉实验
WGAN本身是为了提高GAN模型训练的稳定性而生的。文章强调的两个优点啊有意义的loss稳定训练过程。同一作者的后续文章(improved Training of Wasserstein GANs) 图3展示了clip 版本WGAN IS指标确实比不上DCGAN。
4.WGAN-GP
文章https://arxiv.org/pdf/1704.00028.pdf 代码https://github.com/igul222/improved_wgan_training,作者github 提供的代码tensorflow(明明是同一个作者写的平台还不一样) 自己复现代码时使用的是https://github.com/eriklindernoren/PyTorch-GAN/tree/master/implementations WGAN_GP中写的GP方法。
4.1网络结构
1.G网络带BN,D网络不实用Batch normalization, 转而使用 layer Normalization 2.clip 会使优化变得困难惩罚D网络的梯度使其不至于太大 3.在cifar-10 数据集合上D和G都使用resnet 结构
4.2实验结果 WGAN-GP能看出来一个轮廓算是比较好的一个视觉效果了。
本人用pytroch 复现WGAN_GP ,参考了作者梯度惩罚的源码https://github.com/igul222/improved_wgan_training.主体代码是在WGAN的基础上(https://github.com/martinarjovsky/WassersteinGAN),注释了CLIP部分的代码在D损失函数的计算上增加了梯度惩罚项目(计算方式参考了网上的实现博文)。虽然生成的图像视觉指标轮廓不错但是IS曲线与baseline-WGAN 相比并没特别的优势。
现在WGAN实现的时候D网络的更新次数在100/5之间切换直接换成5 试一试
仓库https://github.com/caogang/wgan-gp (1000star)是pytorch复现的WGAN_GP具体效果没有考察。
// 梯度惩罚的计算法函数
def compute_gradient_penalty(D, real_samples, fake_samples):Calculates the gradient penalty loss for WGAN GP# Random weight term for interpolation between real and fake samplesalpha torch.Tensor(np.random.random((real_samples.size(0), 1, 1, 1))).cuda()# Get random interpolation between real and fake samples# print(real_samples.size(),fake_samples.size())# interpolates (alpha * real_samples ((1 - alpha) * fake_samples)).requires_grad_(True)interpolates (alpha * fake_samples ((1 - alpha) * real_samples)).requires_grad_(True)d_interpolates D(interpolates)# d_interpolates d_interpolates.resize(d_interpolates.size()[0],1)fake Variable(torch.Tensor(real_samples.shape[0], 1).fill_(1.0), requires_gradFalse).cuda()# Get gradient w.r.t. interpolatesgradients torch.autograd.grad(outputsd_interpolates,inputsinterpolates,grad_outputsfake,create_graphTrue,retain_graphTrue,only_inputsTrue,)[0]gradients gradients.view(gradients.size(0), -1)gradient_penalty ((gradients.norm(2, dim1) - 1) ** 2).mean()return gradient_penalty
...
// 判别器的损失函数的计算
gradient_penalty utils.compute_gradient_penalty(netD,inputv_real,inputv_fake)
gradient_penalty * lambda_gp
gradient_penalty.backward()
errD errD_real - errD_fake - gradient_penalty
optimizerD.step()
d_iterations 15.WGAN-SN
文章https://arxiv.org/pdf/1802.05957.pdf 代码https://pytorch.org/docs/stable/generated/torch.nn.utils.spectral_norm.html?highlightnn%20utils%20spectra#torch.nn.utils.spectral_norm,pytorch 官网上实现了D网络参数谱正则化的代码直接在定义层的时候调用就可以了。
5.1网络结构
卷积结构,没有 卷积结构 没有LN的情况
5.2实验结果 cifar-10 上的结构虽然也只能是看一个大致轮廓但是效果还是比较好的。
小结
1.BN 在mini-batch 较小或者RNN等动态网络里效果不好因为少量样本的均值和方差无法反应整体的情况。BN强调了mini-batch 样本之间的联系。D网络本身是将一个输入映射到一个得分输出不应该考虑样本之间的联系所以不应该使用BN在WGAN-GP中转而使用layer-normalization,对同一个样本的各个通道做归一化。
2.网络越深其生成能力越强WGAN-GP论文中cifar-10 IS可以达到7左右WGAN-Sn中也可以达到6.41都是因为网络结构不同所以在浅层只有卷积的GDCGANWGAN想要达到那么高的IS一般是不可能的。
3.尝试人脸生成数据集合the Toronto Face Database (TFD)
4.整理一下各个实验的G训练次数。
5.stack gan 的网络结构基本还行。在做GP实验的时候至少得吧BN该成LN再看看SN中是如何做的。 涉及WGAN的论文总共三篇
WGAN前作Towards Principled Methods for Training Generative Adversarial Networks 论文链接https://arxiv.org/abs/1701.04862
WGANWasserstein GAN 论文链接https://arxiv.org/abs/1701.07875
WGAN后作Improved Training of Wasserstein GANs 论文链接https://arxiv.org/abs/1704.00028v3 都是神人Ishaan Gulrajani 写的连GAN之父Ian Goodfellow都十分惊叹WGAN的改进内容。
神员各种类型GAN代码实现TensorFlow框架https://github.com/LynnHo/AttGAN-Tensorflow
这三篇论文理论性都比较强尤其是第一篇涉及到比较多的理论公式推导。知乎郑华滨的两个论述Wasserstein GAN最新进展从weight clipping到gradient penalty更加先进的Lipschitz限制手法在理论方面已经做了一个很好的介绍。不过对于很多数学不太好的同学包括我自己看着还是不太好理解所以这里尽量站在做工程的角度理一下这三篇文章的思路这样可以对作者的思路有一个比较清晰的理解。