1 原始的 GANs

1.1 GANs 的结构

GANs 的结果图如下所示:

生成式对抗网络 GANs 最重要的两个部分为:

  • 生成器(Generator) :用于生成“假”样本。生成器从先验分布中采得随机信号,经过神经网络的变换,得到模拟样本。
  • 判别器(Discriminator) :用于判断输入的样本是真实的还是合成的。判别器既接收来自实际数据集的真实样本,也接收来自生成器的模拟样本,判别器需要判断输入的样本是真实数据还是生成器的模拟(假)数据。

从上面可以看出,生成器和判别器是对抗的关系,生成器要尽可能生成出让判别器失败的样本,而判别器要尽可能识别出生成器的假样本。GANs 就是通过这种对抗的关系,让生成器和判别器不断提升。理想状态下,生成器和判别器最终能达到一种平衡,两者都趋于完美,都没有更进一步的空间。

1.2 GANs 的训练过程

GANs 采用生成器和判别器交替优化的方式:

(1)固定生成器 GGG,训练判别器 DDD

固定生成器 GGG,然后利用生成器随机模拟产生样本 G(z)G(z)G(z) 作为负样本(zzz 是一个随机向量),并从真实数据集中采样获得正样本 XXX,将这些正负样本输入到判别器 DDD 中,根据判别器的输出(即 D(X)D(X)D(X) 或 D(G(z))D(G(z))D(G(z)) )和样本标签来计算误差,最后利误差反向传播算法来更新判别器的参数,如下图所示

(2)固定判别器 DDD,训练生成器 GGG

固定判别器 DDD,然后利用当前生成器 GGG 随机模拟产生样本 G(z)G(z)G(z),并输入到判别器 DDD 中;根据判别器的输出 D(G(z))D(G(z))D(G(z)) 和样本标签来计算误差,最后利用误差反向传播算法来更新生成器 GGG 的参数,如下图所示:

1.3 GANs 的训练模型

先给出 GANs 的公式:

min⁡Gmax⁡DV(D,G)=Ex∼pdata(x)[log⁡D(x)]+Ez∼pz(z)[log⁡D(G(z))](1)\min_G \max_D V(D,G)=E_{x\sim p_{data}(x)}[\log D(x)] + E_{z\sim p_{z}(z)}[\log D(G(z))] \tag{1}Gmin​Dmax​V(D,G)=Ex∼pdata​(x)​[logD(x)]+Ez∼pz​(z)​[logD(G(z))](1)

训练模型中需要用到的符号有:

  • GGG:生成器模型,通常为一个多层感知机结构的可微函数
  • DDD:判别器模型
  • xxx:判别器的输入,包括真实数据样本和生成器的输出
  • zzz:生成器输入的噪声变量,则生成器的输出为 x=G(z)x=G(z)x=G(z)
  • pdata(x)≐p(x∣data)p_{data}(x) \doteq p(x|data)pdata​(x)≐p(x∣data):表示从实际数据集得到样本 xxx 的概率
  • pz(z)p_{z}(z)pz​(z):生成器输入的噪声变量 zzz 的先验分布
  • pg(x)≐p(x∣g)p_{g}(x) \doteq p(x|g)pg​(x)≐p(x∣g):生成器输出的样本 xxx 的概率
  • psrc(data)p_{src}(data)psrc​(data) 与 psrc(g)p_{src}(g)psrc​(g):判别器模型输入样本中来自真实数据和来自生成器的概率,一般采用一半真实数据、一半假数据的方式,即:psrc(data)=psrc(g)=12p_{src}(data)=p_{src}(g)=\frac{1}{2}psrc​(data)=psrc​(g)=21​
  • G(z;θg)G(z;\theta_g)G(z;θg​):θg\theta_gθg​ 为生成器的多层感知机的参数,G(z;θg)G(z;\theta_g)G(z;θg​) 代表生成器模型的输出空间
  • D(x;θd)D(x;\theta_d)D(x;θd​):θd\theta_dθd​ 为判别器的多层感知机的参数,D(x;θd)D(x;\theta_d)D(x;θd​) 为判别器的输出,是一个标量值
  • D(x)D(x)D(x):判别器预测输入样本 xxx 来自于真实数据集的概率
  • (G∗,D∗)(G^*,D^*)(G∗,D∗):求得的解,即达到最终纳什均衡点时的生成器和判别器

1.3.1 生成器 GGG 固定,寻求当下最优的判别器 DG∗D_G^*DG∗​

判别器 DDD 实质上解决的是一个二分类问题,其损失函数可以用 负对数似然(Negative Log-Likelihood,NLL),也称 绝对交叉熵损失(Categorical Cross-Entropy Loss) 来表示:

L(D)=−∫p(x)[p(data∣x)log⁡D(x)+p(g∣x)log⁡(1−D(x))]dx(2)L(D)=-\int p(x)[p(data|x) \log D(x) + p(g|x) \log (1-D(x))]dx \tag{2}L(D)=−∫p(x)[p(data∣x)logD(x)+p(g∣x)log(1−D(x))]dx(2)

其中:

  • p(data∣x)p(data|x)p(data∣x):样本 xxx 属于真实数据集的概率
  • p(g∣x)p(g|x)p(g∣x):样本 xxx 属于生成器的概率

我们可以推出:

p(x)p(data∣x)=psrc(data)p(x∣data)=psrc(data)pdata(x)=12pdata(x)p(x)p(data|x)=p_{src}(data)p(x|data)=p_{src}(data)p_{data}(x)=\frac{1}{2}p_{data}(x)p(x)p(data∣x)=psrc​(data)p(x∣data)=psrc​(data)pdata​(x)=21​pdata​(x)

p(x)p(g∣x)=psrc(g)p(x∣g)=psrc(g)pg(x)=12pg(x)p(x)p(g|x)=p_{src}(g)p(x|g)=p_{src}(g)p_{g}(x)=\frac{1}{2}p_{g}(x)p(x)p(g∣x)=psrc​(g)p(x∣g)=psrc​(g)pg​(x)=21​pg​(x)

代入公式 (2)则有:

L(D)=−∫p(x)[p(data∣x)log⁡D(x)+p(g∣x)log⁡(1−D(x))]dx=−∫[12pdata(x)log⁡D(x)+12pg(x)log⁡(1−D(x))]dx=−12(Ex∼pdata(x)[log⁡D(x)]+Ex∼pg(x)[log⁡(1−D(x))])(3)\begin{aligned} L(D) &= -\int p(x)[p(data|x) \log D(x) + p(g|x) \log (1-D(x))]dx \\ &= -\int [\frac{1}{2}p_{data}(x) \log D(x) + \frac{1}{2}p_{g}(x) \log (1-D(x))]dx \\ &= -\frac{1}{2}(E_{x\sim p_{data}(x)}[\log D(x)] + E_{x\sim p_{g}(x)}[\log (1-D(x))]) \tag{3} \end{aligned} L(D)​=−∫p(x)[p(data∣x)logD(x)+p(g∣x)log(1−D(x))]dx=−∫[21​pdata​(x)logD(x)+21​pg​(x)log(1−D(x))]dx=−21​(Ex∼pdata​(x)​[logD(x)]+Ex∼pg​(x)​[log(1−D(x))])​(3)

因此,寻求当下最优的判别器 DG∗D_G^*DG∗​ 就是最大化以下值函数:

V(D)=Ex∼pdata(x)[log⁡D(x)]+Ex∼pg(x)[log⁡(1−D(x))](4)V(D)=E_{x\sim p_{data}(x)}[\log D(x)] + E_{x\sim p_{g}(x)}[\log (1-D(x))] \tag{4}V(D)=Ex∼pdata​(x)​[logD(x)]+Ex∼pg​(x)​[log(1−D(x))](4)

对于单个样本 xxx,则最大化值函数:

max⁡Dpdata(x)log⁡D(x)+pg(x)[log⁡(1−D(x))](5)\max_D p_{data}(x)\log D(x) + p_{g}(x)[\log (1-D(x))] \tag{5}Dmax​pdata​(x)logD(x)+pg​(x)[log(1−D(x))](5)

令 pdata(x)=ap_{data}(x)=apdata​(x)=a,pg(x)=bp_{g}(x)=bpg​(x)=b,D(x)=DD(x)=DD(x)=D,则式(5)可以写作:

f(D)=aD+bDf(D)= aD + bDf(D)=aD+bD

令其对 DDD 的导数为零有

df(D)dD=a1D−b11−D=0\frac{df(D)}{dD}= a \frac{1}{D} - b \frac{1}{1-D}=0dDdf(D)​=aD1​−b1−D1​=0

从而有:

D∗=aa+bD^*=\frac{a}{a+b}D∗=a+ba​

即:

D∗(x)=pdata(x)pdata(x)+pg(x)(6)D^*(x)=\frac{p_{data}(x)}{p_{data}(x)+p_{g}(x)} \tag{6}D∗(x)=pdata​(x)+pg​(x)pdata​(x)​(6)

在公式(6)外面套上对 xxx 的积分,解由单点变成函数解:

DG∗(x)=pdatapdata+pg(7)D^*_G(x)=\frac{p_{data}}{p_{data}+p_{g}} \tag{7}DG∗​(x)=pdata​+pg​pdata​​(7)

将公式(7)代入公式(4)中,有:

V(DG∗(x))=Ex∼pdata(x)[log⁡pdatapdata+pg]+Ex∼pg(x)[log⁡(1−pdatapdata+pg)]=∫xpdata(x)log⁡pdatapdata+pgdx+∫xpg(x)log⁡pgpdata+pgdx=∫xpdata(x)log⁡[12×pdata(pdata+pg)/2]dx+∫xpg(x)log⁡[12×pg(pdata+pg)/2]dx=−2log⁡2+∫xpdata(x)log⁡[pdata(pdata+pg)/2]dx+∫xpg(x)log⁡[pg(pdata+pg)/2]dx\begin{aligned} V(D^*_G(x)) &= E_{x\sim p_{data}(x)}[\log \frac{p_{data}}{p_{data}+p_{g}} ] + E_{x\sim p_{g}(x)}[\log (1-\frac{p_{data}}{p_{data}+p_{g}} )] \\ &= \int_x p_{data}(x) \log \frac{p_{data}}{p_{data}+p_{g}} dx + \int_x p_{g}(x) \log \frac{p_{g}}{p_{data}+p_{g}} dx \\ &= \int_x p_{data}(x) \log [\frac{1}{2} \times \frac{p_{data}}{(p_{data}+p_{g})/2}] dx + \int_x p_{g}(x) \log [\frac{1}{2} \times \frac{p_{g}}{(p_{data}+p_{g})/2}] dx \\ &= -2\log 2 + \int_x p_{data}(x) \log [\frac{p_{data}}{(p_{data}+p_{g})/2}] dx + \int_x p_{g}(x) \log [\frac{p_{g}}{(p_{data}+p_{g})/2}] dx \end{aligned} V(DG∗​(x))​=Ex∼pdata​(x)​[logpdata​+pg​pdata​​]+Ex∼pg​(x)​[log(1−pdata​+pg​pdata​​)]=∫x​pdata​(x)logpdata​+pg​pdata​​dx+∫x​pg​(x)logpdata​+pg​pg​​dx=∫x​pdata​(x)log[21​×(pdata​+pg​)/2pdata​​]dx+∫x​pg​(x)log[21​×(pdata​+pg​)/2pg​​]dx=−2log2+∫x​pdata​(x)log[(pdata​+pg​)/2pdata​​]dx+∫x​pg​(x)log[(pdata​+pg​)/2pg​​]dx​

KL 散度(Kullback–Leibler Divergence)
又称相对熵(Relative Entropy),两个分布 PPP 和 QQQ 的 KL 散度记为 KL(P∥Q)KL(P\| Q)KL(P∥Q),计算公式为:
KL(P∥Q)=Ex∼P(x)[log⁡P(x)Q(x)]=∑i=1n[P(xi)log⁡P(xi)Q(xi)]KL(P\| Q)=E_{x\sim P(x)}[\log\frac{P(x)}{Q(x)}]=\sum_{i=1}^n [P(x_i) \log\frac{P(x_i)}{Q(x_i)}]KL(P∥Q)=Ex∼P(x)​[logQ(x)P(x)​]=i=1∑n​[P(xi​)logQ(xi​)P(xi​)​]
JS 散度(Jensen–Shannon Divergence)
两个分布 PPP 和 QQQ 的 JS 散度记为 JS(P∥Q)JS(P\| Q)JS(P∥Q),计算公式为:
JS(P∥Q)=12KL(P∥P+Q2)+12KL(Q∥P+Q2)JS(P\| Q)=\frac{1}{2}KL(P\| \frac{P+Q}{2}) + \frac{1}{2}KL(Q \| \frac{P+Q}{2})JS(P∥Q)=21​KL(P∥2P+Q​)+21​KL(Q∥2P+Q​)

V(DG∗(x))=−2log⁡2+∫xpdata(x)log⁡[pdata(pdata+pg)/2]dx+∫xpg(x)log⁡[pg(pdata+pg)/2]dx=−2log⁡2+KL(pdata∥pdata+pg2)+KL(pg∥pdata+pg2)=−2log⁡2+2JS(pdata∥pg)∈[−2log⁡2,0]\begin{aligned} V(D^*_G(x)) &= -2\log 2 + \int_x p_{data}(x) \log [\frac{p_{data}}{(p_{data}+p_{g})/2}] dx + \int_x p_{g}(x) \log [\frac{p_{g}}{(p_{data}+p_{g})/2}] dx \\ &= -2\log 2 + KL(p_{data} \| \frac{p_{data}+p_{g}}{2}) + KL(p_{g} \| \frac{p_{data}+p_{g}}{2}) \\ &= -2\log 2 + 2 JS(p_{data} \| p_{g}) \\ & \in [-2\log 2, 0] \end{aligned} V(DG∗​(x))​=−2log2+∫x​pdata​(x)log[(pdata​+pg​)/2pdata​​]dx+∫x​pg​(x)log[(pdata​+pg​)/2pg​​]dx=−2log2+KL(pdata​∥2pdata​+pg​​)+KL(pg​∥2pdata​+pg​​)=−2log2+2JS(pdata​∥pg​)∈[−2log2,0]​

固定判别器为 DG∗D_G^*DG∗​ 时,求生成器 GGG 的值函数可以写作:

min⁡GV(G,DG∗(x))=min⁡G{−2log⁡2+2JS(pdata∥pg)}\min_G V(G, D^*_G(x))=\min_G\{ -2\log 2 + 2 JS(p_{data} \| p_{g}) \}Gmin​V(G,DG∗​(x))=Gmin​{−2log2+2JS(pdata​∥pg​)}

显然,当 pdata=pgp_{data} = p_{g}pdata​=pg​ 时,JS(pdata∥pg)=0JS(p_{data} \| p_{g})=0JS(pdata​∥pg​)=0,最优解 G∗(z)=x∼pdata(x)G^*(z)=x \sim p_{data}(x)G∗(z)=x∼pdata​(x),D∗(x)≡12D^*(x) \equiv \frac{1}{2}D∗(x)≡21​,值函数 V(G∗,D∗)=−2log2V(G^*,D^*)=-2log2V(G∗,D∗)=−2log2

1.3.2 判别器 DDD 固定,寻求当下最优的判别器 G∗G^*G∗

令 G′G'G′ 为上一步的生成器,DDD 为在 G′G'G′ 下求得的最优判别器 DG′∗(x)D^*_{G'}(x)DG′∗​(x),那么,求解最优 G∗G^*G∗ 的过程为:

argmin⁡GV(G,DG′∗)=argmin⁡G[KL(pg∥pdata+pg′2)−KL(pg∥pg′)]arg \min_G V(G,D^*_{G'})=arg \min_G [KL(p_g \| \frac{p_{data}+p_{g'}}{2})-KL(p_g \| p_{g'})]argGmin​V(G,DG′∗​)=argGmin​[KL(pg​∥2pdata​+pg′​​)−KL(pg​∥pg′​)]

由此可以得出两个结论:

  • 优化 GGG 的过程是让 GGG 远离前一步的 G′G'G′,同时接近分布 pdata+pg′2\frac{p_{data}+p_{g'}}{2}2pdata​+pg′​​
  • 达到均衡点时 pg′=pdatap_{g'}=p_{data}pg′​=pdata​,有 argmin⁡GV(G,DG′∗)=argmin⁡G0arg \min_G V(G,D^*_{G'})=arg \min_G 0argminG​V(G,DG′∗​)=argminG​0,如果用这时的判别器去训练一个新的生成器 GnewG_{new}Gnew​,理论上可能训练不出来。

1.4 GANs 总结

(1)GANs 本质上式在最小化生成分布与真实数据分布的 JS 距离,当算法收敛时生成器刻画的分布就是真实数据的分布。

(2)发明 GANs 的初衷是为了更好地解决概率生成模型的估计问题

传统概率生成模型方法(如:马尔可夫随机场、 贝叶斯网络)会涉及大量难以完成的概率推断计算,而 GANs 可以避开这类计算。

如果随机变量 ZZZ 和 XXX 之间满足某种映射关系 X=f(Z)X=f(Z)X=f(Z),那么它们的概率分布 pX(X)p_X(X)pX​(X) 和 pZ(Z)p_Z(Z)pZ​(Z) 也存在某种映射关系。当 Z,X∈RZ,X\in RZ,X∈R 都是一维随机变量时,pX=df(Z)dXpZp_X=\frac{df(Z)}{dX}p_ZpX​=dXdf(Z)​pZ​;当 Z,XZ,XZ,X 都是高维随机变量时,导数变成雅克比矩阵 pX=JpZp_X=Jp_ZpX​=JpZ​。 因此,已知 ZZZ 的分布,我们对随机变量间的转换函数 fff 直接建模,就唯一确定了 XXX 的分布。

这样,不仅避开了大量复杂的概率计算,而且给 fff 更大的发挥空间,我们可以用神经网络来训练 fff。

1.5 GANs 存在的问题

在实际训练中,早期阶段生成器 GGG 很差,生成的模拟样本很容易被判别器 DDD 识别,使得 DDD 回传给 GGG 的梯度极小,达不到训练的目的,这个现象称为 优化饱和

原因分析

这里将 DDD 的 Sigmoid 输出层的前一层记为 ooo,那么 D(x)D(x)D(x) 就可以表示成 D(x)=Sigmoid(o(x))D(x)=Sigmoid(o(x))D(x)=Sigmoid(o(x)),此时有:

∇D(x)=∇Sigmoid(o(x))=D(x)(1−D(x))∇o(x)\nabla D(x)= \nabla Sigmoid(o(x)) = D(x)(1-D(x))\nabla o(x)∇D(x)=∇Sigmoid(o(x))=D(x)(1−D(x))∇o(x)

因此训练 GGG 的梯度为:

∇log⁡(1−D(G(z;θg)))=−D(G(z;θg))∇o(G(z;θg))\nabla \log(1-D(G(z;\theta_g))) = -D(G(z;\theta_g))\nabla o(G(z;\theta_g))∇log(1−D(G(z;θg​)))=−D(G(z;θg​))∇o(G(z;θg​))

当 DDD 能很好的分类样本时,意味着认错假样本的概率几乎为零,即 D(G(z;θg))→0D(G(z;\theta_g)) \rightarrow 0D(G(z;θg​))→0,假定 ∣o(G(z;θg))∣<C|o(G(z;\theta_g))|<C∣o(G(z;θg​))∣<C(CCC 为一个常数),则可推出:

lim⁡D(G(z;θg))→0∇log⁡(1−D(G(z;θg)))=−lim⁡D(G(z;θg))→0D(G(z;θg))∇o(G(z;θg))=0\lim_{D(G(z;\theta_g)) \rightarrow 0} \nabla \log(1-D(G(z;\theta_g)))=-\lim_{D(G(z;\theta_g)) \rightarrow 0} D(G(z;\theta_g))\nabla o(G(z;\theta_g))=0D(G(z;θg​))→0lim​∇log(1−D(G(z;θg​)))=−D(G(z;θg​))→0lim​D(G(z;θg​))∇o(G(z;θg​))=0

故 GGG 获得的梯度基本为零,因此 DDD 强大后对 GGG 的帮助反而很小。

解决方法

解决方案是将 log⁡(1−D(G(z;θg)))\log(1-D(G(z;\theta_g)))log(1−D(G(z;θg​))) 变为 log⁡(D(G(z;θg))\log(D(G(z;\theta_g))log(D(G(z;θg​)),形式上有一个负号的差别,故让后者最大等效于让前者最小,二者在最优解相同。

更改后的目标函数的梯度为:

log⁡(D(G(z;θg)))=(1−D(G(z;θg)))∇o(G(z;θg))lim⁡D(G(z;θg))→0∇log⁡(D(G(z;θg)))=∇o(G(z;θg))\begin{aligned} \log(D(G(z;\theta_g))) &= (1-D(G(z;\theta_g))) \nabla o(G(z;\theta_g)) \\ \lim_{D(G(z;\theta_g)) \rightarrow 0} \nabla \log(D(G(z;\theta_g))) &= \nabla o(G(z;\theta_g)) \end{aligned} log(D(G(z;θg​)))D(G(z;θg​))→0lim​∇log(D(G(z;θg​)))​=(1−D(G(z;θg​)))∇o(G(z;θg​))=∇o(G(z;θg​))​

因此,更改后即使 D(G(z;θg))→0D(G(z;\theta_g)) \rightarrow 0D(G(z;θg​))→0,∇log⁡(D(G(z;θg)))\nabla \log(D(G(z;\theta_g)))∇log(D(G(z;θg​))) 也不会消失,仍能给生成器提供有效的梯度。

(GAN 的变种算法以后再继续补充)

2 WGAN

原始 GAN 的判别器是最小化生成分布与真实数据分布的 JS 距离,WGAN算法的改进在于它使用的是 Wasserstein 距离,也称 推土机距离(Earth Mover Distance)

W(P,Q)=inf⁡γ∼∏(P,Q)E(x,y)∼γ[∥x−y∥]W(P,Q)=\inf_{\gamma \sim \prod(P,Q)} E_{(x,y) \sim \gamma}[\|x-y\|]W(P,Q)=γ∼∏(P,Q)inf​E(x,y)∼γ​[∥x−y∥]

3 DCGAN

使用卷积神经网络的GAN。

4 ALI(Adversarially Learned Inference)

将生成网络和推断网络一起放到 GANs 的框架下,进而联合训练生成模型和推断模型。

5 IRGAN(Information Retrieval GAN)

利用 GANs 框架生成离散样本数据

6 SeqGAN(Sequence GAN)

利用 GANs 框架生成文本序列

生成式对抗网络(Generative Adversarial Networks, GANs)相关推荐

  1. 生成式对抗网络Generative Adversarial Networks(GANs)

    1. 前言 2. 参考资料 3. 研究背景 4. GAN的框架 4.1 对抗框架(Adeversarial Nets) *关于"无监督学习"的说明 4.2 Minimax two- ...

  2. 生成对抗网络 – Generative Adversarial Networks | GAN

    生成对抗网络 – Generative Adversarial Networks | GAN 生成对抗网络 – GAN 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频.我们手 ...

  3. 生成对抗网络(Generative Adversarial Networks)

    参考  生成对抗网络(Generative Adversarial Networks) - 云+社区 - 腾讯云 目录 一.生成对抗网络原理 1.模型的起源 2.模型的结构和损失函数 二.对GAN的改 ...

  4. GAN网络学习入门之:A Beginner's Guide to Generative Adversarial Networks (GANs)-翻译

    译自:https://wiki.pathmind.com/generative-adversarial-network-gan 你可能认为编码者不是艺术家,但是编程是一个极具创意的职业.它是基于逻辑的 ...

  5. 生成对抗网络Generative Adversarial Nets(译)

    仅供参考,如有翻译不到位的地方敬请指出. 论文地址:Generative Adversarial Nets  论文翻译:XlyPb(http://blog.csdn.net/wspba/article ...

  6. 对抗生成网络代码Generative Adversarial Networks (GANs),Vanilla GAN,Deeply Convolutional GANs

    理论部分: CS231n 2022PPT笔记- 生成模型Generative Modeling_iwill323的博客-CSDN博客 目录 导包 加载数据 Vanilla GAN Discrimina ...

  7. 生成式对抗网络(GANs)综述

    GAN GAN简介 生成式对抗网络(Generative adversarial networks,GANs)的核心思想源自于零和博弈,包括生成器和判别器两个部分.生成器接收随机变量并生成" ...

  8. Tensorflow 笔记 XIV——生成式对抗网络:GAN 与 CGAN

    文章目录 一.引言 深度学习模型 二.生成式模型 研究意义 常用方法 生成式对抗网络 应用 生成方法 生成原理 GAN的训练 GAN模型结构 生成器模型 判别器模型 三.数据集 四.GANTensor ...

  9. 生成式对抗网络(GAN, Generaitive Adversarial Networks)总结

    最近要做有关图像生成的工作-也是小白,今天简单学习一些有关GAN的基础知识,很浅,入个门,大神勿喷. GAN目前确实是在深度学习领域最热门,最有前景的方向之一.近几年有关于GAN的论文非常非常之多,从 ...

最新文章

  1. C#趣味程序---个位数为6,且能被3整出的五位数
  2. 你还在百度这些代码吗?
  3. Cocos2d 游戏状态机
  4. php5时区,[摘]PHP5.1时区设置
  5. 全国 省市 自治区的数据库sql生成
  6. start mysql server_mysql5我的难点,快捷操作(mysql.server stop start),开机启动
  7. 【cogs2593】幂,暴搜+容斥
  8. ppt转pdf软件免费版
  9. mac下,vagrant桥接,选择“en0: 以太网”无法启动虚拟机解决方案
  10. 怎样呵护友谊_我不善于经营友情,有好的开始却没有好的友谊,怎样建设友情呢?...
  11. python安装不了whl文件_python怎样安装whl文件
  12. 品牌故事宣传片制作要点
  13. 金蝶检测服务器响应异常,连接金蝶云服务器异常 请检查
  14. SOI上的FinFET
  15. 半导体 ,p型和n型半导体的区别
  16. Eclipse折叠代码插件com.cb.eclipse.folding
  17. #Paper Reading# TabNet: Attentive Interpretable Tabular Learning
  18. SqlServer数据库碎片整理——BCC SHOWCONTIG
  19. nanomsg----pair1 的介绍
  20. 《循序渐进DB2(第2版)——DBA系统管理、运维与应用案例》书评之“搜千遍,找万遍,不如手持一本万能剑”...

热门文章

  1. 重磅!教育部再次审批 179 所高校新增本科 AI 专业
  2. 面对海量数据,如何才能查得更快?
  3. bacula 备份小技巧
  4. stm32-mini学习笔记-USMART调试组件
  5. python判断三位数水仙花数_python 判断一个三位数是不是水仙花数
  6. SQL语句插入日期格式数据
  7. 面试官:我就问了一个JVM,没想到他能吹半个小时
  8. android安卓手机同步备份工具syncdroid 1.2.0版,安卓手机同步数据(SyncDroid)
  9. JAVA中final修饰参数
  10. 修改Android 自带输入法(LatinIME)空格键的显示