2017-06-28 73 views
15

का उपयोग करते समय tf.train.SessionRunHook के साथ प्रमाणीकरण मॉनीटर बदलें। मैं एक डीएनएन क्लासिफायर चला रहा हूं, जिसके लिए मैं प्रशिक्षण के दौरान सटीकता की निगरानी कर रहा हूं। योगदान से monitors.ValidationMonitor/है सीख महान काम कर रहा है, मेरे कार्यान्वयन में मैं इसे परिभाषित:अनुमानों का उपयोग करते समय प्रमाणीकरण

validation_monitor = skflow.monitors.ValidationMonitor(input_fn=lambda: input_fn(A_test, Cl2_test), eval_steps=1, every_n_steps=50) 

और फिर से कॉल का उपयोग करें:

clf.fit(input_fn=lambda: input_fn(A, Cl2), 
      steps=1000, monitors=[validation_monitor]) 

जहां:

clf = tensorflow.contrib.learn.DNNClassifier(... 

यह काम करता है ठीक। उस ने कहा, सत्यापन मॉनीटर को बहिष्कृत किया जाना चाहिए और इसी तरह की कार्यक्षमता को tf.train.SessionRunHook के साथ प्रतिस्थापित किया जाना चाहिए।

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

+0

मैं अगर यह मुझे मदद करता है या नहीं की खोज करने के बारे में हूँ, लेकिन मैंने यह पाया: https://github.com/tensorflow/tensorflow/issues/7669#issuecomment-281519985 – aec

+0

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

उत्तर

11

monitors.replace_monitors_with_hooks() नामक एक अनियंत्रित उपयोगिता है जो मॉनीटर को हुक में परिवर्तित करती है। विधि (i) एक सूची है जिसमें मॉनीटर और हुक दोनों हो सकते हैं और (ii) अनुमानक जिसके लिए हुक का उपयोग किया जाएगा, और उसके बाद प्रत्येक मॉनीटर के आस-पास सत्ररुनूक लपेटकर हुक की एक सूची लौटाती है।

from tensorflow.contrib.learn.python.learn import monitors as monitor_lib 

clf = tf.estimator.Estimator(...) 

list_of_monitors_and_hooks = [tf.contrib.learn.monitors.ValidationMonitor(...)] 
hooks = monitor_lib.replace_monitors_with_hooks(list_of_monitors_and_hooks, clf) 

यह वास्तव में पूरी तरह से ValidationMonitor — की जगह की समस्या के लिए एक सच समाधान हम सिर्फ यह बजाय ऊपर लपेटकर रहे एक गैर पदावनत समारोह के साथ नहीं है। हालांकि, मैं कह सकता हूँ यह है कि यह सभी कार्यक्षमता को बनाए रखा में अब तक मेरे लिए काम किया है मैं ValidationMonitor से की जरूरत है (यानी एक मीट्रिक, आदि का उपयोग कर हर n कदम, जल्दी रोक का मूल्यांकन)

एक और बात — इस हुक का उपयोग करने के लिए आपको tf.contrib.learn.Estimator (जो मॉनीटर स्वीकार करता है) से अधिक पूर्ण और आधिकारिक tf.estimator.Estimator (जो केवल हुक स्वीकार करता है) से अपडेट करने की आवश्यकता होगी। तो, आप एक tf.estimator.DNNClassifier के रूप में अपने वर्गीकारक का दृष्टांत करना चाहिए, और (जो सिर्फ एक fit() के फिर से नामकरण है) के बजाय अपने विधि train() का उपयोग कर प्रशिक्षित:

clf = tf.estimator.Estimator(...) 

... 

clf.train(
    input_fn=... 
    ... 
    hooks=hooks) 
संबंधित मुद्दे