我们经由过程对梯度∇zL(z)∇zL(z)进行梯度降低,可以迭代地求出 argminzL(z)argminzL(z) 。我们定义了损掉函数之后,Tensorflow 的 automatic differentiation 可以主动地为我们计算出这个值!所以,完全的基于DCGANs的实现可以经由过程在现有的DCGAN实现上添加4行Tensorflow代率攀来完成。(当然,实现它还须要一些非 Tensorflow代码。)
- self.contextual_loss= tf.reduce_sum(
- tf.contrib.layers.flatten(
- tf.abs(tf.mul(self.mask, self.G) -tf.mul(self.mask, self.images))), 1)
- self.perceptual_loss= self.g_loss
- self.complete_loss= self.contextual_loss + self.lam*self.perceptual_loss
- self.grad_complete_loss= tf.gradients(self.complete_loss, self.z)
接下来,我们定义掩码。我只是在图像的中心区域加了一个,你可以加一些其余,比如随机掩码,然后发一个pull请求。
梯度降低方面,我们对于z在[-1, 1]上的投影,应用小批量、含动量的投影梯度降低。
大年夜这个分布中采样,就可以获得一些数据。须要搞清跋扈的是PDF和样本之间的接洽。
- for idx inxrange(0, batch_idxs):
- batch_images = ...
- batch_mask = np.resize(mask,[self.batch_size] + self.image_shape)
- zhats = np.random.uniform(-1, 1,size=(self.batch_size, self.z_dim))
- v = 0
- for i in xrange(config.nIter):
- fd = {
- self.z: zhats,
- self.mask: batch_mask,
- self.images: batch_images,
- }
- run = [self.complete_loss,self.grad_complete_loss, self.G]
- loss, g, G_imgs = self.sess.run(run,feed_dict=fd)
- v_prev = np.copy(v)
- v = config.momentum*v - config.lr*g[0]
- zhats += -config.momentum * v_prev +(1+config.momentum)*v
- zhats = np.clip(zhats, -1, 1)
4.补全图像
选择一些用于图像补全的图片,将它们放到dcgan-completion.tensorflow/your-test-data/raw 。然后像之前dcgan-completion.tensorflow/your-test-data/aligned 那样分列整洁。这里我大年夜LFW中随机抽出一些图像。我的DCGAN没有应用LFW的图像来练习。
推荐阅读
一、背景本案其实是采取了两种不合的算法对于结不雅进行猜测,我们先来看看随机丛林这一分支。我们经由过程将数据集拆分,百分之八十的数据练习模型,百分之二十的数据猜测。最终模型的出>>>详细阅读
地址:http://www.17bianji.com/lsqh/35350.html
1/2 1