2016-09-24 16 views
8

Tensorflow documentation में नोड्स के डिवाइस प्लेसमेंट को खोजने के लिए निम्न उदाहरण कोड है। यही वह उपकरण है जिस पर एक विशेष गणना होती है।"लॉगिंग डिवाइस प्लेसमेंट" पर टेन्सफोर्लो दस्तावेज़ का उदाहरण कोड कुछ भी प्रिंट नहीं करता है

# Creates a graph. 
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') 
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') 
c = tf.matmul(a, b) 
# Creates a session with log_device_placement set to True. 
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 
# Runs the op. 
print sess.run(c) 

मेरे लिए, कोड डिवाइस के स्थानों को मुद्रित नहीं करता है जैसा कि यह माना जाता है। मैं उबंटू पर चल रही जुपीटर नोटबुक का उपयोग कर रहा हूं। मैं इसे कैसे ठीक कर सकता हूं या जानकारी को किसी अन्य तरीके से ढूंढ सकता हूं?

उत्तर

3

दुर्भाग्य से Jupyter को C++ त्रुटि stdout संदेशों को नहीं देखता है जो डिवाइस प्लेसमेंट लॉगिंग का उपयोग करता है। वहाँ समस्या यहां पर एक लंबे समय तक धागा है:

https://github.com/nteract/hydrogen/issues/209

कोई आसान समाधान का है कि मैं के बारे में पता, Jupyter के बाहर तक स्क्रिप्ट चलाने के अलावा अन्य नहीं है।

7

जुपीटर (और अन्य) उपयोगकर्ताओं के लिए, हाल ही में एक जोड़ा गया सुविधा है जो Session.run() कॉल करते समय डिवाइस प्लेसमेंट को वापस पढ़ना संभव बनाता है और इसे अपनी नोटबुक में प्रिंट करें।

# Creates a graph. 
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') 
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') 
c = tf.matmul(a, b) 
# Creates a session with log_device_placement set to True. 
sess = tf.Session() 

# Runs the op. 
options = tf.RunOptions(output_partition_graphs=True) 
metadata = tf.RunMetadata() 
c_val = sess.run(c, options=options, run_metadata=metadata) 

print metadata.partition_graphs 

metadata.partition_graphs ग्राफ कि मार डाला, उपकरण के आधार पर विभाजित की वास्तविक नोड्स में शामिल है। विभाजन को उनके द्वारा प्रदर्शित डिवाइस के साथ स्पष्ट रूप से लेबल नहीं किया गया है, लेकिन ग्राफ में प्रत्येक NodeDef में device फ़ील्ड सेट है।

+0

यह मुझे अभी दिया: '' google.protobuf.pyext._message.RepeatedCompositeContainer ऑब्जेक्ट 0x7f7ec6db1df8> ' – guillefix

+2

'प्रिंट मेटाडाटा.partition_graphs' के बजाय' प्रिंट मेटाडेटा 'का उपयोग करें। आप इसे ऑब्जेक्ट्स का एक सेट देखेंगे, आप इंडेक्स द्वारा प्रत्येक को देख सकते हैं, जैसे 'प्रिंट मेटाडाटा.partition_graphs [0] ' –

0

मैं टर्मिनल में जुपीटर नोटबुक प्रक्रिया के मानक से मुद्रित डिवाइस मैपिंग देख सकता हूं। यह सिर्फ नोटबुक में मुद्रित नहीं होता है।

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