如何阻止变量更新?

时间:2018-03-20 13:11:15

标签: python tensorflow machine-learning neural-network

在Tensorflow中训练神经网络后,如何阻止它更新权重和偏差以测试其当前值?据我所知,您可以使用inspect_checkpoint.print_tensors_in_checkpoint_file检查它们,但是它作为输出提供的内容无需计算。我已经尝试过了:

  • tf.train.Saver.restore - 这只会在变量保存后将反向传播带回生活(与我想要的完全相反!)
  • tf.variable_scope.reuse_variables - 无法正常工作
  • tf.stop_gradient - 令人惊讶地让一组值在循环in range (0,10)中出现两次,其中打印变量。但是,在所有其他迭代中,变量采用其他值。

1 个答案:

答案 0 :(得分:1)

仅当您运行相应的操作时,才会执行更新操作(例如,对optimize的调用)。如果您想要访问变量的值而不更新它,请不要运行更新操作(例如train_optf.assign),并且只评估变量:

import tensorflow as tf
weight = tf.Variable(0.0)
op = tf.assign_add(weight, 1) # update weight by adding 1 to it
with tf.Session() as sess:   
     sess.run(tf.global_variables_initializer())
     print(sess.run(weight)) # Get the value of the weight
     print(sess.run(op))     # Update the weight
     print(sess.run(weight)) # Get the value of the weight but don't update it
     print(sess.run(weight)) # Get the value of the weight

将打印:

0.0
1.0
1.0
1.0