DCGAN图解

前几天看了DCGAN,并且在github上学习了别人的生成mnist代码。觉得代码的条理还不够太清晰。所以在理解代码的基础上做了一些图来更直观地理解DCGAN:

首先是生成器的图解:

我们看到,生成器是通过输入一段随机的序列Z和Mnist的标签序列Y来反向生成一张图片。图中张量第一个值的100是batchsize。比较关键的一点就是不论是反向卷积还是反向全连接,每次都会将Y和Y的变种粘到要进行操作的矩阵后。这一点作者的意图我还没有搞太明白。

接下来是判别器D的图解:

可以看出来,判别器就是一个卷积+全连接操作。但是同生成器一样,每一次计算之前都要+Y。

源代码中还有一段sample_generate我没有给出来,其实就是在训时生成样本图片。

最后是模型的总体图:

我们看到,模型输出一段随机序列Z ,给出真实标签Y。首先通过G生成一些样本数据,然后将Y和其相关连的真实数据img_real放入判别器,计算其为真实的代价cost。然后将Y和G生成的数据放入判别器中,计算其为错误的代价cost,二者之和就是整个判别器D的总代价。同时,计算生成器G的数据为真实的代价cost.在实验中,我们希望G为真实的代价尽可能的小。而判别器D的总代价尽可能的大。

训练过程采用1:1.即生成器生成一次,判别器训练一次。

源代码的地址在文章末尾,并且作者的数据读入在tf1.3下好像有点问题,我自己从新写了一下:

训练结果:

作者是在sample_generate中一共生成了196张图片,将其按14*14的规格进行排列.下面是一些训练结果:

这个是初始的值

训练一次后,已经有点模糊的样子了:

训练一百多次后(这里的训练是将训练集所有的文件都训练完毕才算一次):

你可能感兴趣的:(深度学习)