将每个模型的变量汇总到一路,如许,它们可以分别练习。
- t_vars = tf.trainable_variables()
- self.d_vars =[var for var in t_vars if 'd_' in var.name]
- self.g_vars =[var for var in t_vars if 'g_' in var.name]
如今我们开端优化参数,应用 ADAM 优化。它是一种自适应非凸优化办法,在SGD面前很有竞争力,一般不须要手动调剂进修率 (learning rate), 动量(momentum),以及其他超参数。
- d_optim =tf.train.AdamOptimizer(config.learning_rate, beta1=config.beta1) \
- .minimize(self.d_loss,var_list=self.d_vars)
- g_optim =tf.train.AdamOptimizer(config.learning_rate, beta1=config.beta1) \
- .minimize(self.g_loss,var_list=self.g_vars)
下面我们遍历数据。每一次迭代,我们采样一个小批数据,然后应用优化器来更新收集。有趣的是,如不雅G只更新一次,辨别器的损掉不会变成0。别的,我认为最后调用d_loss_fake 和 d_loss_real 进行了一些不须要的计算,因为这些值袈溱 d_optim 和 g_optim 中已经计算过了。作为Tensorflow 的一个接洽,你可以试着优化这一部分,并发送PR到原始的repo。
- for epoch inxrange(config.epoch):
- ...
- for idx in xrange(0, batch_idxs):
- batch_images = ...
- batch_z = np.random.uniform(-1, 1,[config.batch_size, self.z_dim]) \
- .astype(np.float32)
- # Update D network
- _, summary_str =self.sess.run([d_optim, self.d_sum],
- feed_dict={ self.images:batch_images, self.z: batch_z })
- # Update G network
- _, summary_str =self
推荐阅读
一、背景本案其实是采取了两种不合的算法对于结不雅进行猜测,我们先来看看随机丛林这一分支。我们经由过程将数据集拆分,百分之八十的数据练习模型,百分之二十的数据猜测。最终模型的出>>>详细阅读
地址:http://www.17bianji.com/lsqh/35350.html
1/2 1