tf.app.run()
कैसे Tensorflow में काम डेमो का अनुवाद करता है?tf.app.run() कैसे काम करता है?
tensorflow/models/rnn/translate/translate.py
में, tf.app.run()
पर एक कॉल है। इसे कैसे संभाला जा रहा है?
if __name__ == "__main__":
tf.app.run()
tf.app.run()
कैसे Tensorflow में काम डेमो का अनुवाद करता है?tf.app.run() कैसे काम करता है?
tensorflow/models/rnn/translate/translate.py
में, tf.app.run()
पर एक कॉल है। इसे कैसे संभाला जा रहा है?
if __name__ == "__main__":
tf.app.run()
यह एक बहुत तेज़ रैपर है जो ध्वज पार्सिंग को संभालता है और फिर अपने मुख्य भाग में भेजता है। code देखें।
if __name__ == "__main__":
का मतलब है वर्तमान फ़ाइल के बजाय एक खोल के तहत निष्पादित एक मॉड्यूल के रूप आयात किया जाता है।
tf.app.run()
आप फ़ाइल app.py
def run(main=None, argv=None):
"""Runs the program with an optional 'main' function and 'argv' list."""
f = flags.FLAGS
# Extract the args from the optional `argv` list.
args = argv[1:] if argv else None
# Parse the known flags from that list, or from the command
# line otherwise.
# pylint: disable=protected-access
flags_passthrough = f._parse_flags(args=args)
# pylint: enable=protected-access
main = main or sys.modules['__main__'].main
# Call the main function, passing through any arguments
# to the final program.
sys.exit(main(sys.argv[:1] + flags_passthrough))
आइए ब्रेक लाइन के माध्यम से देख सकते हैं लाइन द्वारा:
flags_passthrough = f._parse_flags(args=args)
यह सुनिश्चित करता है कि तर्क आप कमांड लाइन के माध्यम से पारित मान्य है, उदा। python my_model.py --data_dir='...' --max_iteration=10000
असल में, यह सुविधा पाइथन मानक argparse
मॉड्यूल के आधार पर लागू की गई है।
main = main or sys.modules['__main__'].main
पहले main
=
के सही पक्ष में वर्तमान समारोह run(main=None, argv=None)
का पहला तर्क है। जबकि sys.modules['__main__']
का अर्थ है वर्तमान चल रही फ़ाइल (उदा। my_model.py
)।
आप my_model.py
में एक main
समारोह की जरूरत नहीं है तो फिर तुम कॉल tf.app.run(my_main_running_function)
करने के लिए है आप my_model.py
में एक main
समारोह है:
तो दो मामले हैं। (यह ज्यादातर मामला है।)
अंतिम पंक्ति:
sys.exit(main(sys.argv[:1] + flags_passthrough))
ठीक से पार्स तर्क के साथ कहा जाता है अपने main(argv)
या my_main_running_function(argv)
समारोह सुनिश्चित करता है।
शुरुआती Tensorflow उपयोगकर्ताओं के लिए पहेली का एक गुम टुकड़ा: Tensorflow में कुछ अंतर्निहित कमांड लाइन ध्वज है हैंडलिंग तंत्र। आप अपने झंडे को 'tf.flags.DEFINE_integer (' batch_size ', 128,' बैच में संसाधित करने के लिए छवियों की संख्या 'को परिभाषित कर सकते हैं।) और फिर यदि आप' tf.app.run() 'का उपयोग करते हैं तो यह चीजों को सेट करेगा ताकि आप अपने कोड में जहां भी चाहें वहां से tf.flags.FLAGS.batch_size' जैसे परिभाषित झंडे के पारित मूल्यों को विश्व स्तर पर एक्सेस कर सकें। – isarandi
यह मेरी राय में (वर्तमान) तीन का बेहतर उत्तर है। यह बताता है कि "tf.app.run() कैसे काम करता है", जबकि अन्य दो उत्तरों सिर्फ यह कहते हैं कि यह क्या करता है। –
लाइन से लाइन तोड़ने के लिए धन्यवाद - मेरे लिए बहुत अच्छा काम करता है ... – Roi
tf.app
में कुछ भी खास नहीं है। यह सिर्फ एक generic entry point script है, जो
Runs the program with an optional 'main' function and 'argv' list.
यह तंत्रिका नेटवर्क के साथ कोई संबंध नहीं है और यह सिर्फ मुख्य कार्य कहता है, यह करने के लिए किसी भी तर्क के माध्यम से गुजर।
from tensorflow.python.platform import flags
f = flags.FLAGS
और फिर बहस का एक सेट के साथ अपने कस्टम मुख्य समारोह चलाएँ:
सरल शब्दों में, tf.app.run()
का काम पहले की तरह बाद में उपयोग के लिए वैश्विक झंडे स्थापित करने के लिए है।
उदा। TensorFlow NMT codebase में, प्रशिक्षण के लिए प्रोग्राम निष्पादन के लिए पहले ही प्रवेश बिंदु/निष्कर्ष इस बिंदु पर शुरू होता है (कोड नीचे देखें)
if __name__ == "__main__":
nmt_parser = argparse.ArgumentParser()
add_arguments(nmt_parser)
FLAGS, unparsed = nmt_parser.parse_known_args()
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
argparse
का उपयोग कर तर्क पार्स करने के बाद, tf.app.run()
के साथ समारोह "मुख्य" चलाने के जो की तरह परिभाषित किया गया है:
def main(unused_argv):
default_hparams = create_hparams(FLAGS)
train_fn = train.train
inference_fn = inference.inference
run_main(FLAGS, default_hparams, train_fn, inference_fn)
तो, वैश्विक उपयोग के लिए झंडे सेट करने के बाद tf.app.run()
बस चलाता है कि main
समारोह है कि आप argv
इसके मापदंडों के रूप में के साथ यह करने के लिए गुजरती हैं।
पी.एस .: Salvador Dali's answer कहते हैं, यह सिर्फ एक अच्छा सॉफ्टवेयर इंजीनियरिंग अभ्यास, मुझे लगता है है, हालांकि मैं यकीन नहीं है कि TensorFlow main
समारोह के किसी भी अनुकूलित रन की तुलना में सामान्य CPython का उपयोग कर चलाया गया था प्रदर्शन नहीं कर रहा हूँ।
इसका मतलब क्या है "ध्वज पार्सिंग हैंडल करता है"? हो सकता है कि आप शुरुआती लोगों को सूचित करने के लिए एक लिंक जोड़ सकें जिसका मतलब क्या है? – Pinocchio
यह झंडे पैकेज का उपयोग कर कार्यक्रम में आपूर्ति की गई कमांड लाइन तर्कों को पार करता है। (जो कवर के तहत मानक 'argparse' लाइब्रेरी का उपयोग करता है, कुछ रैपर के साथ)। यह मेरे उत्तर में जुड़े कोड से जुड़ा हुआ है। – dga
app.py में, 'मुख्य = मुख्य या sys.modules ['__ मुख्य __'] क्या है। मुख्य' और ' sys.exit (मुख्य (sys.argv [: 1] + flags_passthrough)) 'मतलब है? – hAcKnRoCk