【问题标题】:How can I quickly check which tensorflow variables are updated during training and which are frozen?如何快速检查训练期间哪些 tensorflow 变量被更新,哪些被冻结?
【发布时间】:2018-11-03 06:22:43
【问题描述】:

我相信在很多场景中,我们需要冻结 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)

快速确认这些变量在训练期间确实没有改变的建议方法是什么?

【问题讨论】:

    标签: python tensorflow deep-learning tensorboard pre-trained-model


    【解决方案1】:

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

    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 列表中,就可以了。

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多