2017-07-02 11 views

उत्तर

8

आप API of ConfigProto को देखें, तो लाइन 278 पर, तो आप इस देखेंगे:

// Whether soft placement is allowed. If allow_soft_placement is true, 
    // an op will be placed on CPU if 
    // 1. there's no GPU implementation for the OP 
    // or 
    // 2. no GPU devices are known or registered 
    // or 
    // 3. need to co-locate with reftype input(s) which are from CPU. 
    bool allow_soft_placement = 7; 

क्या यह वास्तव में इसका मतलब है कि अगर आप allow_soft_placement=True बिना कुछ इस तरह करते हैं, TensorFlow एक त्रुटि फेंक नहीं है।

with tf.device('/gpu:0'): 
    # some op that doesn't have a GPU implementation 
यह सही नीचे

, आप लाइन 281 पर देखेंगे:

// Whether device placements should be logged. 
    bool log_device_placement = 8; 

जब log_device_placement=True, तो आप कुछ इस तरह का एक वर्बोज़ उत्पादन प्राप्त होगा:

2017-07-03 01:13:59.466748: I tensorflow/core/common_runtime/simple_placer.cc:841] Placeholder_1: (Placeholder)/job:localhost/replica:0/task:0/cpu:0 
Placeholder: (Placeholder): /job:localhost/replica:0/task:0/cpu:0 
2017-07-03 01:13:59.466765: I tensorflow/core/common_runtime/simple_placer.cc:841] Placeholder: (Placeholder)/job:localhost/replica:0/task:0/cpu:0 
Variable/initial_value: (Const): /job:localhost/replica:0/task:0/cpu:0 
2017-07-03 01:13:59.466783: I tensorflow/core/common_runtime/simple_placer.cc:841] Variable/initial_value: (Const)/job:localhost/replica:0/task:0/cpu:0 

आप देख सकते हैं, जहां प्रत्येक ऑपरेशन मैप किया गया है। इस मामले के लिए, वे सभी /cpu:0 पर मैप किए गए हैं, लेकिन यदि आप एक वितरित सेटिंग में हैं, तो कई और डिवाइस होंगे।

6

tensorflow/core/protobuf/config.proto में टिप्पणी के अतिरिक्त (allow_soft_placement, log_device_placement) यह भी TF के using GPUs tutorial से समझाया गया है।

पता लगाने के लिए कौन से डिवाइस आपके संचालन और tensors को सौंपा जाता है, बनाने log_device_placement विन्यास विकल्प के साथ सत्र सही पर निर्धारित किया है।

जो डिबगिंग के लिए सहायक है। अपने ग्राफ के प्रत्येक नोड्स के लिए, आपको वह डिवाइस दिखाई देगा जो इसे सौंपा गया था।


आप TensorFlow चाहते हैं, तो स्वचालित रूप से मामले में आपरेशन चलाने के लिए निर्दिष्ट एक मौजूद नहीं है एक मौजूदा और समर्थित डिवाइस का चयन करने के लिए, आप विन्यास विकल्प है जब में सही पर allow_soft_placement सेट कर सकते हैं सत्र बनाना

यदि आप गलती से गलत डिवाइस या डिवाइस को मैन्युअल रूप से निर्दिष्ट करते हैं जो किसी विशेष सेशन का समर्थन नहीं करता है तो कौन आपकी मदद करेगा। यह उपयोगी है अगर आप एक कोड लिखते हैं जिसे पर्यावरण में निष्पादित किया जा सकता है जिसे आप नहीं जानते हैं। आप अभी भी उपयोगी चूक प्रदान कर सकते हैं, लेकिन विफलता के मामले में एक सुंदर फॉलबैक।

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