2016-11-19 86 views
0

在Python中我可以使用Tensorflow如何让张价值

a = np.array([[3], [6], [9]]) 

显然,

a[0][0] = 3 
a[1][0] = 6 
a[2][0] = 9 

但我试图做同样的事情tensorflow

import tensorflow as tf 
a = tf.Variable(np.array([[3], [6], [9]])) 
init = tf.initialize_all_variables() 

with tf.Session() as ss: 
    ss.run(init) 
    for i in range(3): 
     print sess.run(a[i][0]) 

如果我打印它(用于循环),我得到TypeError: 'Variable' object is not callable

我该如何解决这个错误? 非常感谢您的帮助!

+0

您的代码适用于我,在打印错误后,即打印(ss.run(a [i] [0]) –

回答

0

尽管tensorflow和numpy乍看起来非常相似,但tensorflow工作流程与numpy的工作流程有很大不同。使用张量流时,应首先定义计算图 - 定义张量之间关系的规则。

就你而言,图形只包含一个变量a。一旦定义了图形,您就可以通过运行张量流会话来计算图形中不同节点的值。在你的情况下,打印的a值,使用下面的代码:

sess = tf.Session() 
init = tf.initialize_all_variables() 
sess.run(init) 
print(sess.run(a)) 
+0

我需要分别获取值 –

+0

sess.run(a)会返回您变量a in a你可以将结果赋值给另一个变量,然后像普通numpy数组一样迭代它。 –

0

您可以定义另一个运,这是依赖于原始变量,包含您的张切片:

import tensorflow as tf 
a = tf.Variable(np.array([[3], [6], [9]])) 
part = [] 
for i in range(3): 
    part.append(a[i][0]) 
init = tf.initialize_all_variables() 

with tf.Session() as ss: 
    ss.run(init) 
    for op in part: 
     print ss.run(op) 
+0

我试过了,但是不起作用 –

+0

你有什么样的错误?张量流的哪个版本?在0.11.0rc0它的作品。 – sygi