近期集中学习了GAN,下面记录一下调研的结果,和学习的心得,疏漏的地方,敬请指正。

本文将分为几个部分进行介绍,首先是GAN的由来,其次是GAN的发展,最后是GAN的应用。

先把最近收集的资料列举一下吧。

其中首推知乎的一位博士生,讲解的深入浅出,将来也是出好产品的科研人啊。令人拍案叫绝的Wasserstein GAN

自己顺着思路推导了一下GAN和WGAN的公式,能搞这些东西的人都是牛人啊。GAN的发展过程,就是loss不断改进的过程!

跑了一下Wgan的代码,是基于pytorch的,我跑的是和文章里的结果一样的数据lsun,的bedroom类。从代码来看吧,确实挺简单的,应该说是比起文章里复杂的公式推导,代码是相当的简单和易懂。wgan也是先优化discriminator,再优化generator,其中优化过程中是先优化D一百步迭代,然后再优化generator G。通篇读了一下代码,相当直观的。就是首先将真实数据作为输入,forward,然后给标签为1,计算backward,计算真实数据带来的误差。然后再随机生成噪声,用噪声作为G的输入,产生样本,再输入D,forward,输入标签-1,计算backward,计算噪声的误差。两个误差一起,进行模型优化,一次迭代更新D完成。在100次迭代更新D后,更新G。更新G的过程也是很直观的,随机噪声输入G,产生样本输入D,完成forward。用-1作为标签,进行backward,计算误差,根据误差进行模型优化。因为是基于pytorch的,基本上函数都封装好了,看着很简单,不过据我同事说,torch里的坑挺多的,不像caffe透明性高点,但是我看caffe里没有人实现wgan,同时caffe现在更新越来越慢了,有点没落的迹象,可能以后我会多用些pytorch。说说wgan的结果吧,训练过程中确实挺稳定的,而且不需要什么特别的技巧,代码里我是没看到,当然有人说还是有差别的,我会继续调一下对比一下看看。

05-23 05:39