在训练期间,我试图冻结一些时期。为此,我正在使用tf.cond:
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()并执行
self._train_op = optimizer.minimize(
self._loss, name="optimizer",
global_step=global_step)
一切正常。有人知道原因吗?在训练过程中满足某些条件时如何冻结某些层?