我試圖生產用於TensorArray的組合while_loop一個很簡單的例子:TensorArray和while_loop如何在tensorflow中一起工作?
# 1000 sequence in the length of 100
matrix = tf.placeholder(tf.int32, shape=(100, 1000), name="input_matrix")
matrix_rows = tf.shape(matrix)[0]
ta = tf.TensorArray(tf.float32, size=matrix_rows)
ta = ta.unstack(matrix)
init_state = (0, ta)
condition = lambda i, _: i < n
body = lambda i, ta: (i + 1, ta.write(i,ta.read(i)*2))
# run the graph
with tf.Session() as sess:
(n, ta_final) = sess.run(tf.while_loop(condition, body, init_state),feed_dict={matrix: tf.ones(tf.float32, shape=(100,1000))})
print (ta_final.stack())
但我收到以下錯誤:
ValueError: Tensor("while/LoopCond:0", shape=(), dtype=bool) must be from the same graph as Tensor("Merge:0", shape=(), dtype=float32).
任何人有想法是什麼問題?
得到最終的'TensorArray'你需要爲'session.run(ta.stack())',而不是運行循環直接哪個失敗,因爲你不能'session.run(TensorArray)'。 – sirfz
對不起,我沒有明白你的意思。你能寫出正確的表格嗎? –