2016-02-11 9 views
6

मैं लूप के लिए एक होना चाहता हूं कि इसके पुनरावृत्तियों की संख्या एक टेंसर मूल्य पर निर्भर है। उदाहरण के लिए:मैं अपनी रेंज के रूप में एक टेंसर के साथ एक लूप कैसे चला सकता हूं? (tensorflow में)

for i in tf.range(input_placeholder[1,1]): 
    # do something 

हालांकि मैं निम्नलिखित त्रुटि मिलती है:

"लेखन त्रुटि: 'टेन्सर' वस्तु iterable नहीं है"

मुझे क्या करना चाहिए?

उत्तर

-6

tf.range सहित टेंसरफ्लो पायथन एपीआई फ़ंक्शंस के रिटर्न वैल्यू का प्रकार Tensor है। एक Tensor एक ग्राफिक में नोड करने के लिए एक प्रतीकात्मक हैंडल है जो गणना का प्रतिनिधित्व करता है। Tensor पर eval विधि को कॉल करके या की ऑब्जेक्ट को run पर ऑब्जेक्ट करके आप वास्तविक गणना करते हैं। आपके मामले में, शायद आप जो करना चाहते थे वह numpy के range से अधिक था।

for in in np.range(...): 
    # do something 
+0

नहीं, यह मैं क्या देख रहा हूँ नहीं है। मैं एक लूप चाहता हूं कि केओ को संचालित किया जाए जबकि के इनपुट के आधार पर निर्धारित किया जाए। इनपुट एक टेंसर प्लेसहोल्डर है। –

+0

वास्तव में, मेरे पास दो इनपुट हैं। पहला एक मैट्रिक्स है, और दूसरी बात यह है कि उस पर एक विशिष्ट ऑपरेशन कितनी बार किया जाना चाहिए। –

+2

जब आप एक tensorflow सेशन लिख रहे हैं, तो numpy कॉल होने से, ओपी को GPU पर चलने से रोकता है, इसलिए ओप के लिए केवल GPU अनुपालन tensorflow ops के लिए यह महत्वपूर्ण है। –

16

यह आप जबकि पाश (tf.while_loop) के रूप में इस प्रकार है tensorflow का उपयोग करने की आवश्यकता होगी करने के लिए:

i = tf.constant(0) 
while_condition = lambda i: tf.less(i, input_placeholder[1, 1]) 
def body(i): 
    # do something here which you want to do in your loop 
    # increment i 
    return [tf.add(i, 1)] 

# do the loop: 
r = tf.while_loop(while_condition, body, [i]) 
+1

मेरे लिए काम करता है। Tnx! – anamar

+0

जब मेरे पास लूप में एक चर है? मुझे एक संदर्भ त्रुटि https://stackoverflow.com/questions/47760429/tensorflow-local-variable-lstm-state-referenced-before-assignment – kong

+0

ऐसा लगता है, लेकिन यह सीधे टेंसफोर्लो सलाह के विपरीत है: "के लिए सही प्रोग्राम, जबकि_loop को किसी भी समानांतर_करण के लिए एक ही परिणाम वापस करना चाहिए> 0. " ऐसा लगता है कि यह रेस हालत स्थापित कर सकता है जिससे लूप को "एन" और "एन * समानांतर_करण" के बीच कहीं भी मूल्यांकन किया जा रहा है –

संबंधित मुद्दे

 संबंधित मुद्दे