繁体   English   中英

如何快速检查训练期间哪些张量流变量已更新以及哪些已冻结?

[英]How can I quickly check which tensorflow variables are updated during training and which are frozen?

我相信在很多情况下,我们需要冻结tensorflow图中的某些层并保持其他层可训练。

有没有一种方法可以快速检查网络是否按预期进行了训练? 例如,冻结层中的变量实际上在训练期间不会更新。

我正在使用以下方法冻结范围“ ABC”中的所有变量:

    with slim.arg_scope(inception.inceptionb_v2_arg_scope()):
        with tf.variable_scope('ABC'):
          _, end_points = getattr(inception, 'inception_v2'(..., is_training = False))
                         ......
    trainables = [v for v in tf.trainable_variables() if 'ABC/' not in v.name]
    optimizer = tf.train.AdamOptimizer().minimize(loss, var_list= trainables)

快速确定这些变量在训练过程中确实没有改变的建议方法是什么?

您可以在几次迭代后检查它们:

frozen_variables = [v for v in tf.trainable_variables() if 'ABC/' in v.name]
tmp_frozen_variables_np = sess.run(frozen_variables)
# Training Code
assert np.allclose(tmp_frozen_variables_np, sess.run(frozen_variables))

但是,只要它们不在优化程序的var列表中,就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM