张量流声明并更新多个模型

时间:2018-09-17 07:36:38

标签: python tensorflow model declare

我是python和张量的初学者。我在tensorflow上遇到了一些问题

我想要类似的东西

def discriminator(..):
  ...
  return logits

def generator(..):
  ...
  return imgs

nb_teachers = 100
disc_teachers = discriminator[nb_teachers]
disc_student = disriminator
generator = generator 
opt = None
for disc in disc_teachers:
  x = imgs(batch_size)
  z = rand(batch_size)
  fake = generator(z)
  d_logit, f_logit = disc(x), disc(fake)
loss = -tf.reduce_mean(tf.log(d_logit) + tf.log(1-f_logit))
opt[i] = tf.train.AdamOptimizer(0.03).minimize(loss, var_list=disc's var)
  ...

我不知道如何使用相同的“鉴别器图”来声明和更新多个鉴别器

在此代码中,生成器和disc_student使用disc_teachers的投票([0,1])进行更新

请让我知道如何声明和更新多个相同的图形模式

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了您的问题,则您想要创建几个具有相同图形并且完全分离(没有任何共享变量)的模型。

每个模型的每个变量都可以通过其自己的变量名称来区分。并且您可以使用with variable_scope(any_scope_name) as scope:(参考:variable_scope)来划分和定义变量名的层次结构

,您可以像这样更新每个单独的变量,

var_list1 = [ i for i in tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,scope='some_scope1')]
var_list2 = [ i for i in tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES,scope='some_scope2')]
opt1 = tf.train.AdamOptimizer(0.03).minimize(loss1, var_list=var_list1)
opt2 = tf.train.AdamOptimizer(0.03).minimize(loss2, var_list=var_list2)