日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果

發布時間:2023/12/13 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GAN模型網絡結構+實驗效果演化

  • 1.GAN
    • 1.1網絡結構
    • 1.2實驗結果
  • 2.DCGAN
    • 2.1網絡結構
    • 2.2實驗結果
  • 3.WGAN
    • 3.1網絡結構
    • 3.2實驗結果
  • 4.WGAN-GP
    • 4.1網絡結構
    • 4.2實驗結果
  • 5.WGAN-SN
    • 5.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.數據集:MNIST,the Toronto Face Database (TFD) , CIFAR-10

2.Gaussian Parzen window 擬合樣本,輸出對應的log-likelihood.

3.直接展示了在三個圖像集合上的效果,最右遍一列顯示的是與第二列最相似的訓練樣本(具體如何衡量相近,需要查論文)


a) MNIST,b) 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.html,pytorch 官網DCAGAN教程,示例是人臉圖像生成

2.1網絡結構

P3:網絡結構表
1.去除所有的poling層
2.D,G中都使用batchnorm
3.移除全聯接結構
4.G激活函數:ReLU+Tanh(最后一層)
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_grad=False).cuda()# Get gradient w.r.t. interpolatesgradients = torch.autograd.grad(outputs=d_interpolates,inputs=interpolates,grad_outputs=fake,create_graph=True,retain_graph=True,only_inputs=True,)[0]gradients = gradients.view(gradients.size(0), -1)gradient_penalty = ((gradients.norm(2, dim=1) - 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 += 1

5.WGAN-SN

文章:https://arxiv.org/pdf/1802.05957.pdf
代碼:https://pytorch.org/docs/stable/generated/torch.nn.utils.spectral_norm.html?highlight=nn%20utils%20spectra#torch.nn.utils.spectral_norm,pytorch 官網上實現了D網絡參數譜正則化的代碼,直接在定義層的時候調用就可以了。

5.1網絡結構

D卷積結構,沒有BN
G卷積結構+BN
(沒有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,都是因為網絡結構不同,所以在淺層只有卷積的G(DCGAN,WGAN)想要達到那么高的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

WGAN:Wasserstein 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限制手法在理論方面已經做了一個很好的介紹。不過對于很多數學不太好的同學(包括我自己),看著還是不太好理解,所以這里盡量站在做工程的角度,理一下這三篇文章的思路,這樣可以對作者的思路有一個比較清晰的理解。

總結

以上是生活随笔為你收集整理的PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。