मैंने सोचा है कि चर असाइनमेंट sess.run करने के लिए दिया एक सूची में सभी कार्यों के बाद किया जाता है, लेकिन निम्नलिखित कोड अलग निष्पादन में अलग-अलग परिणाम देता है। यह सूची में यादृच्छिक रूप से संचालन प्रतीत होता है और सूची में ऑपरेशन के चलाने के बाद चर निर्दिष्ट करता है।टेन्सफोर्लो: जब सूची में sess.run में परिवर्तनीय असाइनमेंट किया जाता है?
a = tf.Variable(0)
b = tf.Variable(1)
c = tf.Variable(1)
update_a = tf.assign(a, b + c)
update_b = tf.assign(b, c + a)
update_c = tf.assign(c, a + b)
with tf.Session() as sess:
sess.run(initialize_all_variables)
for i in range(5):
a_, b_, c_ = sess.run([update_a, update_b, update_c])
मैं चर असाइनमेंट का समय जानना चाहता हूं। कौन सा सही हैं: "update_x -> असाइन एक्स -> ... -> udpate_z -> z आवंटित" या "update_x -> udpate_y -> udpate_z -> आवंटित एक, ख, ग"? (जहां (एक्स, वाई, जेड) का क्रमपरिवर्तन है (ए, बी, सी)) इसके अलावा, अगर वहाँ एक तरीका है कि बाद के काम (असाइनमेंट सूची में सभी आपरेशनों किया जाता है के बाद किया जाता है) का एहसास है, तो कृपया मुझे पता चले कि इसे कैसे महसूस किया जाए।
आपके उत्तर @mrry के लिए धन्यवाद। मैंने इसकी सराहना की और समझ लिया कि मेरे कोड में संचालन के क्रम को कैसे निर्दिष्ट किया जाए। फिर, मेरे पास आपके उत्तर के बारे में एक और सवाल है। यदि किसी सूची में संचालन में कुछ परस्पर निर्भरताएं हैं, तो क्या उनके संचालन के बाद सभी मूल्यों को निष्पादित किया जाता है? और उस स्थिति में, डिफ़ॉल्ट रूप से संचालन के निष्पादन का आदेश क्या है ('tf.control_dependencies' का उपयोग किए बिना)। – Sarah
"ऑपरेशन में एक सूची" से आपका क्या मतलब है? आम तौर पर, जैसे ही उनका नया मान उपलब्ध होता है, ऑप असाइन कर सकते हैं। जैसे ही चरण शुरू होता है वैरिएबल-रीड ऑप्स चला सकते हैं। हालांकि, स्पष्ट नियंत्रण (या डेटा) निर्भरताओं के बिना, एक चर के लिए असाइनमेंट एक ही चर के बाद या बाद में हो सकता है, इस पर निर्भर करता है कि ओप कैसे निर्धारित किए जाते हैं। इस मामले में डिफ़ॉल्ट ऑर्डरिंग अनिर्धारित है। – mrry
संदिग्ध qustion के लिए खेद है। मेरा मतलब है एक ऑपरेशन सूची जैसे '[op1, op2, op3] '। मुझे गलतफहमी हो सकती है। छद्म कोड: 'v = tf.Variable (0), c = tf.constant (3), add = tf.add (v, c), अद्यतन = tf.assign (v, add), mul = tf.mul (जोड़ें, अपडेट करें), sess.run ([mul, mul]) '' 9, 9] 'नहीं '[9, 36]' देता है। तो मैंने सोचा कि सूची में सभी परिचालनों के बाद असाइनमेंट किया जाता है '[mul, mul] ', जैसे mul -> mul -> असाइन करें, mul -> असाइन करें -> mul -> असाइन करें। – Sarah