爲了舉例,考慮計算張量流中的內積。我試圖在TensorFlow的圖表中用不同的方式來引用圖表中的事物,當用一個使用feed的會話對它進行評估時。請看下面的代碼:你可以給TensorFlow提供什麼數據類型作爲關鍵字?
import numpy as np
import tensorflow as tf
M = 4
D = 2
D1 = 3
x = tf.placeholder(tf.float32, shape=[M, D], name='data_x') # M x D
W = tf.Variable(tf.truncated_normal([D,D1], mean=0.0, stddev=0.1)) # (D x D1)
b = tf.Variable(tf.constant(0.1, shape=[D1])) # (D1 x 1)
inner_product = tf.matmul(x,W) + b # M x D1
with tf.Session() as sess:
sess.run(tf.initialize_all_variables())
x_val = np.random.rand(M,D)
#print type(x.name)
#print x.name
name = x.name
ans = sess.run(inner_product, feed_dict={name: x_val})
ans = sess.run(inner_product, feed_dict={x.name: x_val})
ans = sess.run(inner_product, feed_dict={x: x_val})
name_str = unicode('data_x', "utf-8")
ans = sess.run(inner_product, feed_dict={"data_x": x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={'data_x': x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={name_str: x_val}) #doesn't work
print ans
了以下工作:
ans = sess.run(inner_product, feed_dict={name: x_val})
ans = sess.run(inner_product, feed_dict={x.name: x_val})
ans = sess.run(inner_product, feed_dict={x: x_val})
,但最後三個:
name_str = unicode('data_x', "utf-8")
ans = sess.run(inner_product, feed_dict={"data_x": x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={'data_x': x_val}) #doesn't work
ans = sess.run(inner_product, feed_dict={name_str: x_val}) #doesn't work
沒有。我檢查了爲什麼鍵入x.name
,但即使我將它轉換爲python類型的解釋器時,它仍然無法正常工作。 I documentation似乎認爲鍵必須是張量。然而,它接受x.name
,而它不是張量(它的一個<type 'unicode'>
),是否有人知道發生了什麼?
我可以粘貼文件說,它需要一個張量:
可選feed_dict參數允許呼叫者覆蓋在圖形張量 值。在feed_dict每個鍵可以是 以下類型之一:
如果鍵是一張量,該值可以是一個Python標量,字符串, 列表或numpy的ndarray可以轉換到相同的D型爲 張量。此外,如果密鑰是佔位符,則將檢查值的形狀是否與佔位符兼容。如果 鍵是SparseTensor,則該值應該是SparseTensorValue。 feed_dict中的每個 值必須可轉換爲相應鍵的dtype 的numpy數組。