2015-12-21 8 views
10

को देखते हुए x, y tensors कर रहे हैं, मैं जानता हूँ कि मैंकैसे एक चर जो नाम दायरे का सम्मान करता है नाम बदलने के लिए?

with tf.name_scope("abc"): 
    z = tf.add(x, y, name="z") 

ताकि z"abc/z" नाम पर है कर सकते हैं।

मैं सोच रहा हूँ अगर वहाँ एक समारोह f जो निम्नलिखित मामले में सीधे नाम असाइन मौजूद है:

with tf.name_scope("abc"): 
    z = x + y 
    f(z, name="z") 

अब बेवकूफ f मैं उपयोग कर रहा हूँ है z = tf.add(0, z, name="z")

उत्तर

22

आप "का नाम बदलने" चाहते हैं एक सेशन, वहाँ, जो सीधे करने के लिए कोई रास्ता नहीं है, क्योंकि एक tf.Operation (या tf.Tensor) अपरिवर्तनीय है एक बार यह बनाया गया है। एक सेशन का नाम बदलने का विशिष्ट तरीका इसलिए tf.identity() उपयोग करने के लिए है, जो लगभग कोई क्रम लागत है:

with tf.name_scope("abc"): 
    z = x + y 
    z = tf.identity(z, name="z") 

नोट तथापि कि आपका नाम गुंजाइश की संरचना करने के लिए अनुशंसित तरीका करने के लिए गुंजाइश ही के नाम आवंटित करने के लिए है "

with tf.name_scope("abc") as scope: 
    # z will get the name "abc". x and y will have names in "abc/..." if they 
    # are converted to tensors. 
    z = tf.add(x, y, name=scope) 

इस तरह TensorFlow पुस्तकालयों संरचित कर रहे हैं, और यह TensorBoard में सबसे अच्छा दृश्य देने के लिए जाता है: (एक भी उत्पादन सेशन वहाँ है) के दायरे से उत्पादन "।

0

यह यह केवल z = tf.identity(z, name="z_name") साथ tf.name_scope बिना भी काम करता है लगता है। tf.get_default_graph().get_tensor_by_name("z_name:0") या tf.get_default_graph().get_tensor_by_name("z_name_new:0")

: आप अतिरिक्त z = tf.identity(z, name="z_name_new") चलाते हैं तो आप दोनों के नाम का उपयोग करते हुए एक ही टेन्सर उपयोग कर सकते हैं
संबंधित मुद्दे