关于gan的流程理解

关于gan的流程理解,

最近再看cyclegan所以慢慢来看,最后了解了原理来跑代码就好

先说第一点:

架构

  gan的架构就是两个重要的点:1 生成器  2  分辨器

  

  生成器的作用就是生成假的图片

  分辨器的作用就是在给一个正确的图片和一个生成的假的图片之后,他可以把正确的找出来

 由此,其实我这里提出好多问题:

1 如何生成假的图片:反卷积

2 如何判断,好像是一个二分类,两个图片都给过去,<0.5就是假的,>0.5就是真的,当然这个0.x就是sigmoid(wx+b)(也就是距离的sigmoid值,)可是还是有问题,同时给两个图片吗?应该是给一个图片,然后算距离?不是,给两个图片,都算标定值的距离,两个物体只能二分类?

3 如何梯度下降?

带着这几个问题去读源码

面对第一个问题:如何生成图片,源码给出的解决方案是反卷积,

那么如何反卷积呢?

就是这样:

具体函数就一个:nn.ConvTranspose2d(ngf * mult, int(ngf * mult / 2),
                                         kernel_size=3, stride=2,
                                         padding=1, output_padding=1,
                                         bias=use_bias),

首先的操作是:

1 进行卷积上图第一行  feature:4*4 filter: 2*2  stride: 2   得到结果:2*2

2      进行反卷积:首先第一步:

      1 补0:让卷积后的结果,每一个元素后面都补(stride-1)个0 成为了 下左2

      2 补0:对整体再补0,这个整体补0的个数是取决于补0之后,把卷积核完全颠倒过来,按照stride=1进行卷积,卷积之后要得到原始大小(上左一)的结果

猜你喜欢

转载自www.cnblogs.com/lllcccddd/p/10621014.html
今日推荐