Тензор потока объявить и обновить несколько моделей - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в питоне и тензор. У меня есть некоторые проблемы с tenorflow

Я хочу что-то вроде

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 голосов
/ 17 сентября 2018

если я правильно понимаю ваш вопрос, вы хотите сделать несколько моделей, которые имеют один и тот же график и полностью разделены (не имеют общих переменных).

Каждую переменную каждой модели можно отличить по ихсобственное имя переменной.и вы можете разделить и определить имя переменной иерархически, используя 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)
...