环境:python3.7+tensorflow2.0.0a-gpu
WGAN-GP
不断修改G,D参数,通过计算两个分布之间的距离(这里应该是将两个分布都看作高斯分布)代替原先GAN的两个分布之间的散度,使得G逼近真实分布,有效避免了两个分布之间没有重叠部分而导致的散度为定值,即loss没有梯度的问题。应该说从原理上使得GAN向前迈进了一步,目前我认为是框架上的突破。而不是那种修改G的卷积神经网络的优化GAN。是可以应用到大多数GAN上的一步。
关于gradient-penalty
1. x服从penalty分布,即x为真实分布和G分布的中间随机取得,可用a*sample_r+(1-a)sampel_g的方法获得x的tensor,其中a为(0,1)之间随机变化的值,sample_r,sample_g为分别从不同分布中的采样值。
2.(mark) 超参数lanmuda是自己设置的,先设置为1,具体多少为好,取值范围是多少也是一个问题,可以通过对应的论文去探究。
3. gp中的下标2即是2范数的意思,即欧几里得范数。操作就是常规意义上理解的取模
4. gp中的梯度下降是对x_hat求导,不是一般的 对w求导,需要注意一下