2016-07-18 9 views
7

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

from abc import ABCMeta 


class InterfaceCalculator: 
    __metaclass__ = ABCMeta 

    @abstractmethod 
    def calculate_mean(self): 
     pass 

अनुकरणीय परीक्षण का मामला

from unittest import TestCase 


class TestInterfaceCalculator(TestCase): 

    def test_should_correctly_calcluate_mean(self): 
     X=[1,1] 
     expected_mean = 1 
     calcluator =Calculator() 
     self.assertAlmostEqual(calculator.calculate_mean(X), expected_mean) 

मैं कक्षा कैलक्यूलेटर (InterfaceCalculator) के कार्यान्वयन को छोड़, क्योंकि यह मामूली बात है।

निम्नलिखित विचार को समझना बहुत आसान है। मशीन लर्निंग के बारे में कैसे? निम्नलिखित उदाहरण पर विचार करें। हम बिल्ली, कुत्ते फोटो वर्गीकरण को लागू करना चाहते हैं। इंटरफ़ेस से शुरू करें।

from abc import ABCMeta 


class InterfaceClassifier: 
    __metaclass__ = ABCMeta 

    @abstractmethod 
    def train_model(self, data): 
     pass 

    @abstractmethod 
    def predict(self, data): 
     pass 

मैं unittests

from unittest import TestCase 


class TestInterfaceCalculator(TestCase): 
    def __init__(self): 
     self.model = CatDogClassifier() 

    def test_should_correctly_train_model(self, data): 
     """ 
     How can be implemented? 
     """ 
     self.model.train_model(data) 

    def test_should_correctly_calcluate_mean(self): 
     input ="cat.jpg" 
     expected_result = "cat" 
     calcluator =.assertAlmostEqual(self.model.preditct(input), expected_result) 

यह रास्ता मशीन सीखने मॉडल पर काम में मदद करने के TDD उपयोग करने के लिए है की बहुत चौखट सेट तैयार? या इस मामले में टीडीडी बेकार है। यह केवल इनपुट डेटा की शुद्धता को सत्यापित करने और प्रशिक्षित मॉडल के उच्च स्तर परीक्षण को जोड़ने में हमारी सहायता कर सकता है? मैं अच्छे स्वचालित परीक्षण कैसे बना सकता हूं?

+0

कह नहीं सकते मैं टेस्ट स्वीट के हिस्से के रूप में इस किया है, लेकिन पहली बात यह है कि मन में आता है एक बेंचमार्क या अनुभवहीन वर्गीकारक के खिलाफ वर्गीकारक के पार सत्यापन त्रुटि परीक्षण कर रहा है। –

उत्तर

2

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

0

मुझे लगता है कि आप दो अलग-अलग लक्ष्यों को यहाँ के बारे में बात की जा सकती है:

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

  2. मैं अपने एल्गोरिदम में बग कैसे पकड़ सकता हूं? यह कार्यात्मक मुद्दों को खोजने पर केंद्रित है। दूसरे शब्दों में, समस्याएं मौजूद हैं क्योंकि कोड डिज़ाइन के अनुसार नहीं लिखा गया था। भले ही डिज़ाइन खराब हो (जो उपरोक्त बिंदु 1 में पड़ता है), कोड को सही तरीके से कार्यान्वित करना चाहिए। यह वह जगह है जहां टीडीडी का सबसे अधिक मूल्य है। हां, इसके लिए उपयोगी होने के लिए परीक्षक कोड को मान्य करने और जोर देने के लिए विशिष्ट पैरामीटर होना चाहिए।

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