我想了解張量流計算圖的概念。更具體地說,如何實現一個循環。想象一下,我要乘以2的恆定4次:循環沒有張量流展開
import tensorflow as tf
def tf_mul(op):
return tf.mul(op,2.)
s=tf.placeholder_with_default(10.0,[])
通常的方式做這將是展開圖的四倍,並創建一個操作和評估它在最後。
for i in range(4):
s = tf_mul(s)
with tf.Session() as sess:
print sess.run(s)
返回的160正確的答案,但如果我檢查作業,我看到Mul
操作創造了四次,這是操作的浪費。 爲了避免這些「冗餘」業務的創造,這使我心中的唯一方法是用下面來代替以前的塊:
my_op=tf_mul(s)
with tf.Session() as sess:
answer=my_op.eval(session=sess)
for i in range(3):
answer=my_op.eval(session=sess,feed_dict={s:answer})
print answer
這也給了正確的答案,並創建只有一次Mul
操作但是,這是非常低效的,因爲我必須四次評估my_op
,即使我只關心最終答案。發生這種情況是因爲我無法向feed_dict輸入張量。
現在我的問題是如果有一個更有效的方式來實現這個經常性循環沒有額外的評估?我應該關心創建這些額外的操作嗎?
您可以用'tf.while_loop' –