2017-07-13 36 views
8

के साथ tf.summary का उपयोग करना मैं एक मॉडल में कुछ टेंसरबोर्ड लॉगिंग जोड़ने की कोशिश कर रहा हूं जो नए tf.estimator API का उपयोग करता है। -टेन्सफोर्लो - 1.2 अनुमानक एपीआई

def model_fn(features, labels, mode): 
    # ... model stuff, calculate the value of loss 
    tf.summary.scalar("loss", loss) 
    # ... 

हालांकि, जब मैं इस कोड चलाने के लिए, मैं निम्नलिखित मिल

summary_hook = tf.train.SummarySaverHook(
    save_secs=2, 
    output_dir=MODEL_DIR, 
    summary_op=tf.summary.merge_all()) 

# ... 

classifier.train(
    input_fn, 
    steps=1000, 
    hooks=[summary_hook]) 

मेरी model_fn में, मैं भी एक summary बनाने हूँ:

मैं एक हुक तो तरह तैयार है summary_hook से त्रुटि: Exactly one of scaffold or summary_op must be provided. यह शायद इसलिए है क्योंकि tf.summary.merge_all() कोई सारांश नहीं ढूंढ रहा है औरके बावजूद None लौटा रहा है 210 मैंने model_fn में घोषित किया।

कोई विचार क्यों यह काम नहीं करेगा?

उत्तर

3

उपयोग tf.train.Scaffold() और tf.merge_all

summary_hook = tf.train.SummarySaverHook(
    save_secs=2, 
    output_dir=MODEL_DIR, 
    scaffold=tf.train.Scaffold(summary_op=tf.summary.merge_all())) 
+1

की मैं लगभग एक ही कोड संरचना है, लेकिन मैं निम्नलिखित त्रुटि मिलती है: "लेखन त्रुटि: लायें तर्क अमान्य प्रकार है, एक स्ट्रिंग या टेंसर होना चाहिए। (एक मचान को एक टेंसर या ऑपरेशन में परिवर्तित नहीं किया जा सकता है।) "कोई विचार यह क्यों काम नहीं कर रहा है? धन्यवाद! – EXP0

+0

टेन्सफोर्लो के नए संस्करणों में, यह काम करता है यदि आप 'मूल्यांकन' करने के लिए हुक पास करते हैं, लेकिन 'ट्रेन' के लिए नहीं। ट्रेन के लिए आपको केवल 'mode_fn' में सारांश परिभाषित करने की आवश्यकता है और वे स्वचालित रूप से टेंसरबोर्ड पर लॉग इन हो जाएंगे। (हाँ, मुझे यह भी लगता है कि यह गूंगा और counterintuitive है) – GPhilo

2

निम्नलिखित बस जो कोई भी भविष्य में इस सवाल है के लिए (चयनित समाधान में मेरी टिप्पणी देखें), चयनित समाधान मेरे लिए काम नहीं करता है के रूप में गुजरती हैं।

असल में, टीएफ 1.2 अनुमानक एपीआई के साथ, किसी को सारांश_शुक करने की आवश्यकता नहीं है। मेरे पास model_fn में tf.summary.scalar("loss", loss) है, और सारांश_hook के बिना कोड चलाएं। नुकसान रिकॉर्ड किया गया है और टेंसरबोर्ड में दिखाया गया है। मुझे यकीन नहीं है कि इस और इसी तरह के प्रश्नों के बाद टीएफ एपीआई बदल दी गई थी।

+1

अनुमानक एपीआई स्वचालित रूप से प्रशिक्षण के दौरान सारांश को संभालती है। लेकिन मुझे पसंद है मूल्यांकन के दौरान समान सारांश देखने के लिए, जो नहीं होता है। – 4dan

+0

यह तब तक काम करता है जब तक आप 'model_fn' में सारांश डालते हैं। क्या होगा यदि आप 'input_fn' में कुछ सारांशित करना चाहते हैं? (उदाहरण के लिए, डेटा संवर्द्धन की जांच करना छवियों को लॉग इन करके) – GPhilo

0
Tensorflow ver-r1.3

अपने आकलनकर्ता में अपनी सारांश ऑप्स जोड़े के साथ

model_fn

उदाहरण:

tf.summary.histogram(tensorOp.name, tensorOp) 

आप सारांश लेखन समय और स्थान का उपभोग कर सकते लग रहा है, तो आप नियंत्रित कर सकते हैं सारांशों की लेखन आवृत्ति, आपके अनुमानक run_config

run_config = tf.contrib.learn.RunConfig() 
run_config = run_config.replace(model_dir=FLAGS.model_dir) 
run_config = run_config.replace(save_summary_steps=150) 

नोट: इस, TensorBoard प्रवेश के लिए पूर्ण सारांश लेखक आवृत्ति को प्रभावित करेगा अपने आकलनकर्ता (tf.estimator.Estimator)

+0

हालांकि यह मूल्यांकन के लिए काम नहीं करेगा। – GPhilo

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