在Tensorflow中训练神经网络后,如何阻止它更新权重和偏差以测试其当前值?据我所知,您可以使用inspect_checkpoint.print_tensors_in_checkpoint_file
检查它们,但是它作为输出提供的内容无需计算。我已经尝试过了:
tf.train.Saver.restore
- 这只会在变量保存后将反向传播带回生活(与我想要的完全相反!)tf.variable_scope.reuse_variables
- 无法正常工作tf.stop_gradient
- 令人惊讶地让一组值在循环in range (0,10)
中出现两次,其中打印变量。但是,在所有其他迭代中,变量采用其他值。答案 0 :(得分:1)
仅当您运行相应的操作时,才会执行更新操作(例如,对optimize
的调用)。如果您想要访问变量的值而不更新它,请不要运行更新操作(例如train_op
或tf.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