访问具有绝对范围的变量

时间:2016-06-09 11:18:19

标签: python-2.7 tensorflow

我一直在调查tensorflow docs以某种方式使用绝对名称检索变量,而不是相对于现有范围的相对名称

get_variable_absolute这样的东西会收到var的绝对路径(即:h1/Weights而不是Weights变量范围内的h1

这个问题的动机是对this problem的极度沮丧。

1 个答案:

答案 0 :(得分:4)

我从TensorFlow深入阅读tutorial on Sharing Variables后找到了答案。

假设:

  • 您创建了一个变量' Weights'在范围' h1'
  • 你在范围内' foo'
  • 您想要检索变量' h1 / Weights'

为此,您需要保存使用tf.variable_scope('h1')创建的范围对象,以便在范围内使用它' foo'。

有些代码会更有说服力:

with tf.variable_scope('h1') as h1_scope:  # we save the scope object in h1_scope
  w = tf.get_variable('Weights', [])

with tf.variable_scope('foo'):
  with tf.variable_scope(h1_scope, reuse=True):  # get h1_scope back
    w2 = tf.get_variable('Weights')

assert w == w2

结论:当您使用其python对象传递范围,而不仅仅是其名称时,您可以退出当前范围。