CNTK - मॉडल की निगरानी

इस अध्याय में, हम समझेंगे कि CNTK में किसी मॉडल की निगरानी कैसे करें।

परिचय

पिछले अनुभागों में, हमने अपने एनएन मॉडल पर कुछ सत्यापन किया है। लेकिन, क्या प्रशिक्षण के दौरान हमारे मॉडल की निगरानी करना भी आवश्यक और संभव है?

हां, पहले से ही हमने उपयोग किया है ProgressWriterहमारे मॉडल की निगरानी करने के लिए कक्षा और ऐसा करने के कई और तरीके हैं। तरीकों में गहराई से जाने से पहले, आइए एक नजर डालते हैं कि CNTK में निगरानी कैसे काम करती है और हम इसका उपयोग अपने NN मॉडल में समस्याओं का पता लगाने में कैसे कर सकते हैं।

CNTK में कॉलबैक

दरअसल, प्रशिक्षण और सत्यापन के दौरान, सीएनटीके हमें एपीआई में कई स्थानों पर कॉलबैक को निर्दिष्ट करने की अनुमति देता है। सबसे पहले, जब CNTK कॉलबैक को आमंत्रित करता है, तो करीब से देखें।

जब CNTK कॉलबैक लागू करता है?

CNTK प्रशिक्षण के क्षणों में कॉलबैक का परीक्षण करेगा और सेट के क्षणों का परीक्षण करेगा

  • एक मिनीबैच पूरा हो गया है।

  • प्रशिक्षण के दौरान डाटासेट पर एक पूर्ण स्वीप पूरा हो गया है।

  • परीक्षण का एक छोटा सा परीक्षण पूरा हो गया है।

  • डेटासेट पर एक पूर्ण स्वीप परीक्षण के दौरान पूरा हो गया है।

कॉलबैक निर्दिष्ट करना

CNTK के साथ काम करते समय, हम API में कई स्थानों पर कॉलबैक निर्दिष्ट कर सकते हैं। उदाहरण के लिए−

जब एक नुकसान समारोह पर कॉल ट्रेन?

यहां, जब हम ट्रेन को नुकसान फ़ंक्शन पर बुलाते हैं, तो हम कॉलबैक तर्क के माध्यम से कॉलबैक का एक सेट निम्नानुसार निर्दिष्ट कर सकते हैं

training_summary=loss.train((x_train,y_train),
parameter_learners=[learner],
callbacks=[progress_writer]),
minibatch_size=16, max_epochs=15)

मिनीबच स्रोतों के साथ काम करते समय या मैनुअल मिनीबैच लूप का उपयोग करते समय

इस मामले में, हम बनाते समय निगरानी के उद्देश्य के लिए कॉलबैक निर्दिष्ट कर सकते हैं Trainer इस प्रकार

from cntk.logging import ProgressPrinter
callbacks = [
   ProgressPrinter(0)
]
Trainer = Trainer(z, (loss, metric), learner, [callbacks])

विभिन्न निगरानी उपकरण

आइए हम विभिन्न निगरानी उपकरणों के बारे में अध्ययन करें।

ProgressPrinter

इस ट्यूटोरियल को पढ़ते हुए, आप पाएंगे ProgressPrinterसबसे अधिक उपयोग किए जाने वाले निगरानी उपकरण के रूप में। की कुछ विशेषताएँProgressPrinter निगरानी उपकरण हैं −

ProgressPrinterक्लास हमारे मॉडल की निगरानी के लिए बुनियादी कंसोल-आधारित लॉगिंग लागू करता है। यह उस डिस्क पर लॉग इन कर सकता है जिसे हम चाहते हैं।

वितरित प्रशिक्षण परिदृश्य में काम करते हुए विशेष रूप से उपयोगी।

यह उस परिदृश्य में काम करते समय भी बहुत उपयोगी है जहां हम अपने पायथन प्रोग्राम के आउटपुट को देखने के लिए कंसोल पर लॉग इन नहीं कर सकते हैं।

निम्नलिखित कोड की मदद से, हम एक उदाहरण बना सकते हैं ProgressPrinter-

ProgressPrinter(0, log_to_file=’test.txt’)

हमें आउटपुट कुछ मिलेगा जो हमने पहले के सेक्शन में देखा है

Test.txt
CNTKCommandTrainInfo: train : 300
CNTKCommandTrainInfo: CNTKNoMoreCommands_Total : 300
CNTKCommandTrainBegin: train
-------------------------------------------------------------------
average since average since examples
loss last metric last
------------------------------------------------------
Learning rate per minibatch: 0.1
1.45 1.45 -0.189 -0.189 16
1.24 1.13 -0.0382 0.0371 48
[………]

TensorBoard

ProgressPrinter का उपयोग करने के नुकसानों में से एक यह है कि, हम यह नहीं देख सकते हैं कि समय के साथ नुकसान और मीट्रिक प्रगति कितनी कठिन है। TensorBoardProgressWriter CNTK में प्रोग्रेसप्रिन्टर क्लास का एक बेहतरीन विकल्प है।

इसका उपयोग करने से पहले, हमें निम्नलिखित कमांड की मदद से इसे स्थापित करना होगा -

pip install tensorboard

अब, TensorBoard का उपयोग करने के लिए, हमें सेट अप करने की आवश्यकता है TensorBoardProgressWriter हमारे प्रशिक्षण कोड में निम्नानुसार है

import time
from cntk.logging import TensorBoardProgressWriter
tensorbrd_writer = TensorBoardProgressWriter(log_dir=’logs/{}’.format(time.time()),freq=1,model=z)

करीबी विधि को कॉल करना एक अच्छा अभ्यास है TensorBoardProgressWriter उदाहरण के बाद प्रशिक्षण के साथ किया NNनमूना।

हम कल्पना कर सकते हैं TensorBoard निम्नलिखित कमांड की मदद से लॉगिंग डेटा -

Tensorboard –logdir logs