Python Tensorflow tf.get_变量()的索引

Python Tensorflow tf.get_变量()的索引,python,tensorflow,neural-network,data-science,Python,Tensorflow,Neural Network,Data Science,下午好。 我继续研究tensorflow,现在遇到了重用变量“W”的问题 下面是代码片段: 我希望避免硬代码,并从恢复的模型中获取值(而不是10-get_value(),等等)。 我在这里读了好几条线索,但到处都只需要整个变量。但是,我不知道如何正确地获取,例如,从这里获取784号: W = tf.Variable(tf.zeros([784, 10]), name = "W") 我试过这个: idx = tf.constant([0]) temp_var = tf.get_variable(

下午好。 我继续研究tensorflow,现在遇到了重用变量“W”的问题 下面是代码片段:

我希望避免硬代码,并从恢复的模型中获取值(而不是10-get_value(),等等)。 我在这里读了好几条线索,但到处都只需要整个变量。但是,我不知道如何正确地获取,例如,从这里获取784号:

W = tf.Variable(tf.zeros([784, 10]), name = "W")
我试过这个:

idx = tf.constant([0])
temp_var = tf.get_variable("W") 
size_1 = tf.gather(temp_var, idx)
这种方法给了我一个错误: 新变量(W)的形状必须完全定义,但未知

(同样,我避免硬编码,无法编写[number,number]这样的形状)

我更改了变量的作用域,认为它与作用域有关,添加了以下行:

with tf.variable_scope("my"):

但我犯了这个错误: ValueError:变量my/W不存在,或者不是用tf.get_Variable()创建的。您的意思是在VarScope中设置reuse=None吗 在设置reuse=None之后,我仍然有同样的问题


您能告诉我如何在这段代码中通过索引获取值吗?

您也需要为第一次访问创建带有get_变量的变量。对于后面的代码,您需要设置reuse=True。 类似于以下的东西应该可以工作:

W = tf.get_variable("W", initializer=tf.zeros([784, 10], dtype=YOUR_DTYPE)
...
temp_var = tf.get_variable("W", reuse=True)
tf.gather(...)

非常感谢。我们不能简单地将reuse=True添加到变量:)我将其添加到范围中,下面是代码:但现在我得到了错误值error:形状必须是相等的秩,但通过将形状0与其他形状合并得到2和1。对于输入形状为[1,10],[10]的“一个/形状”(op:'Pack')。我知道这是因为我对idx的努力,但我甚至没有一点如何改变通过索引获取数字784的操作,而不破坏匹配输入形状的代码。
W = tf.get_variable("W", initializer=tf.zeros([784, 10], dtype=YOUR_DTYPE)
...
temp_var = tf.get_variable("W", reuse=True)
tf.gather(...)