2016-10-13 5 views
8

मैं अपने केरास (टेन्सफोर्लो बैकएंड) मॉडल से एक पीबी फ़ाइल बनाने की कोशिश कर रहा हूं ताकि मैं इसे आईओएस पर बना सकूं। मैं freeze.py का उपयोग कर रहा हूं और मुझे आउटपुट नोड्स को पास करने की आवश्यकता है। मैं अपने केरा मॉडल के आउटपुट नोड्स के नाम कैसे प्राप्त करूं?आप केरास मॉडल में tensorflow आउटपुट नोड्स का नाम कैसे प्राप्त करते हैं?

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py

उत्तर

2

output_node_names ग्राफ नोड्स आप (उदा। Softmax) अनुमान के लिए उपयोग करना चाहते हैं के नाम शामिल करना चाहिए। इसका उपयोग sub-graph निकालने के लिए किया जाता है जिसे अनुमान के लिए आवश्यक होगा। freeze_graph_test पर देखने के लिए उपयोगी हो सकता है।

6

तो उत्पादन नोड्स स्पष्ट रूप से उल्लेख नहीं किया गया जब Keras में एक मॉडल का निर्माण, तुम उन्हें इस तरह प्रिंट कर सकते हैं:

[print(n.name) for n in tf.get_default_graph().as_graph_def().node]

फिर तुम सब करने की जरूरत है सही है, जो अक्सर लगता है सक्रियण समारोह के नाम के समान। आप फ़ंक्शन में output_node_names के मान के रूप में पाए गए इस स्ट्रिंग नाम का उपयोग कर सकते हैं।

+1

यह विधि 10000 से अधिक नोड्स नाम वापस कर देगी, यह पता लगाने के लिए कि किसको चुना जाना चाहिए? धन्यवाद! –

3

आप output_nodes को खोजने के लिए tensorflow उपयोगिता: summarize_graph का भी उपयोग कर सकते हैं। official documentation से:

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

इसे केवल सहेजे गए ग्राफ pb फ़ाइल को इनपुट के रूप में आवश्यक है। उदाहरण के लिए प्रलेखन की जांच करें।

0

आप अंतिम परत का नाम प्राप्त करने के लिए केरास मॉडल.summary() का उपयोग कर सकते हैं।

model.outputs खाली नहीं है, तो आप के माध्यम से नोड नाम प्राप्त कर सकते हैं:

[node.op.name for node in model.outputs] 

आप

session = keras.backend.get_session() 

के माध्यम से सत्र मिलता है और आप

के माध्यम से consts करने के लिए सभी प्रशिक्षण चर परिवर्तित
min_graph = convert_variables_to_constants(session, session.graph_def, [node.op.name for node in model.outputs]) 

इसके बाद आप

के माध्यम से एक प्रोटोबफ फ़ाइल लिख सकते हैं
tensorflow.train.write_graph(min_graph, "/logdir/", "file.pb", as_text=True) 
संबंधित मुद्दे