我是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])进行更新
请让我知道如何声明和更新多个相同的图形模式
答案 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)