Trenuję Generatywną Sieć Przeciwdziałania (GAN) w tensorflow, gdzie zasadniczo mamy dwie różne sieci, każda z własną optymalizacją.Przywróć podzestaw zmiennych w Tensorflow
self.G, self.layer = self.generator(self.inputCT,batch_size_tf)
self.D, self.D_logits = self.discriminator(self.GT_1hot)
...
self.g_optim = tf.train.MomentumOptimizer(self.learning_rate_tensor, 0.9).minimize(self.g_loss, global_step=self.global_step)
self.d_optim = tf.train.AdamOptimizer(self.learning_rate, beta1=0.5) \
.minimize(self.d_loss, var_list=self.d_vars)
Problem polega na tym, że najpierw trenuję jedną z sieci (g), a następnie chcę razem ćwiczyć g i d. Jednak, kiedy wywołanie funkcji Load:
self.sess.run(tf.initialize_all_variables())
self.sess.graph.finalize()
self.load(self.checkpoint_dir)
def load(self, checkpoint_dir):
print(" [*] Reading checkpoints...")
ckpt = tf.train.get_checkpoint_state(checkpoint_dir)
if ckpt and ckpt.model_checkpoint_path:
ckpt_name = os.path.basename(ckpt.model_checkpoint_path)
self.saver.restore(self.sess, ckpt.model_checkpoint_path)
return True
else:
return False
mam błąd podobny do tego (o wiele więcej traceback):
Tensor name "beta2_power" not found in checkpoint files checkpoint/MR2CT.model-96000
mogę przywrócić sieć g i zachować szkolenia z tej funkcji, ale kiedy chcę wystrzelić d od podstaw, a g z przechowywanego modelu mam ten błąd.