Python tf.cond()卡在GPU上
在训练中,我试图在经历了一些阶段后冻结一些层。为此,我使用tf.cond如下:Python tf.cond()卡在GPU上,python,tensorflow,optimization,Python,Tensorflow,Optimization,在训练中,我试图在经历了一些阶段后冻结一些层。为此,我使用tf.cond如下: self._train_op = tf.cond(condition > 0, lambda: optimizer.minimize( self._loss, name="optimizer", global_step=global_step),
self._train_op = tf.cond(condition > 0,
lambda: optimizer.minimize(
self._loss, name="optimizer",
global_step=global_step),
lambda: optimizer.minimize(
self._loss, name="optimizer_2",
global_step=global_step,
var_list = [v for v in
tf.trainable_variables()
if 'domain' not in v.name])) #Freeze layers with domain in them
我在sess.run()期间更改了condition的值,这段代码在CPU上运行良好,但当我尝试在GPU上运行它时,它将永远挂起。如果我删除tf.cond()并执行以下操作
一切正常。有人知道原因吗?当训练过程中满足某些条件时,我如何冻结某些图层?这里有什么进展吗?我尝试使用cond()来做类似的事情,即定义优化器。不过,大多数答案似乎会让你转向使用不同的功能。我被困在条件张量的正确形状上。它想要0,我通过等级2。
self._train_op = optimizer.minimize(
self._loss, name="optimizer",
global_step=global_step)