2016-11-19 187 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