6

तक नाम मैं की बात कर रहा हूँ:परिवर्तनीय/प्लेसहोल्डर के नाम से संदर्भ कैसे प्राप्त करें?

tf.placeholder(tf.float32, name='NAME') 
tf.get_variable("W", [n_in, n_out],initializer=w_init()) 

मैं कई प्लेसहोल्डर जो मैं संदर्भ गुजर बिना बाहर कार्यों से उपयोग करना चाहते, इस धारणा के साथ कि दिए गए नाम धारण प्लेसहोल्डर मौजूद कैसे आप एक संदर्भ प्राप्त कर सकते हैं उनको? (यह सब ग्राफ निर्माण के दौरान है, रनटाइम नहीं)

और मेरा दूसरा सवाल यह है कि मैं उन सभी चरों को कैसे प्राप्त कर सकता हूं जो किसी दिए गए नाम को पकड़ते हैं, चाहे कोई गुंजाइश हो?

उदाहरण: मेरे सभी वजनों में कई स्कॉप्स के तहत "डब्ल्यू" नाम है, मैं उन्हें सभी सूची में प्राप्त करना चाहता हूं। मैं मैन्युअल रूप से प्रत्येक को जोड़ना नहीं चाहता हूं। पूर्वाग्रहों के साथ भी किया जा सकता है, मान लें कि मैं हिस्टोग्राम करना चाहता हूं।

उत्तर

11

सबसे पहले, आप प्लेसहोल्डर tf.Graph.get_tensor_by_name() का उपयोग कर प्राप्त कर सकते हैं। उदाहरण के लिए, यह सोचते हैं कि आप डिफ़ॉल्ट ग्राफ के साथ काम कर रहे हैं: दूसरे

placeholder1 = tf.placeholder(tf.float32, name='NAME') 
placeholder2 = tf.get_default_graph().get_tensor_by_name('NAME:0') 
assert placeholder1 == placeholder2 

, मैं निम्नलिखित समारोह का प्रयोग करेंगे किसी दिए गए नाम के साथ सभी चर (कोई बात नहीं उनके कार्यक्षेत्र) प्राप्त करने के लिए:

def get_all_variables_with_name(var_name): 
    name = var_name + ':0' 
    return [var for var in tf.all_variables() if var.name.endswith(name)] 
+0

फ्लॉलेस , धन्यवाद। एक बात मुझे एक नोट चाहिए, क्यों: 0? और जब कभी आप उपयोग करते हैं: 1? –

+5

'op_name: 0' का अर्थ है "टेंसर जो' op_name' नामक ऑपरेशन के 0 वें आउटपुट है।" तो आप एकाधिक आउटपुट के साथ एक ऑपरेशन के आउटपुट प्राप्त करने के लिए '...: 1' का उपयोग कर सकते हैं, लेकिन दोनों tf.placeholder()' और 'tf.Variable' एकल-आउटपुट ऑप्स हैं ताकि आप हमेशा' ...: 0 का उपयोग कर सकें उनके लिए। – mrry

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