2016-07-18 4 views
5

में कनवर्ट करने के लिए कैसे करें सबसे तेज़ .so प्राप्त करने के लिए C++ के एक टुकड़े में एक विज्ञान मॉडल (उदाहरण के लिए एक RandomForestClassifier फिट का परिणाम) को परिवर्तित करने के लिए बेहतर तरीका होना चाहिए कुछ अन्य पारिस्थितिकी तंत्र से?एक साइस्किट मॉडल को तेज़ '.so`

+0

मुझे समझ में नहीं आता कि आपका क्या मतलब है "कन्वर्ट"। 'RandomForestClassifier' [पायथन में लागू किया गया है] (https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/ensemble/forest.py#L372-L628), संकलित एक्सटेंशन के रूप में नहीं। यदि आप एक तेज़ संकलित संस्करण चाहते हैं तो आपको इसे फिर से लिखना होगा। एक विकल्प [साइथन] (http://cython.org/) का उपयोग करना होगा जो पाइथन से सी के सुपरसेट को परिवर्तित कर सकता है ताकि इसे स्थिर रूप से संकलित किया जा सके। शून्य-प्रयास समाधान नहीं है, हालांकि - किसी भी सराहनीय गति-अप को देखने के लिए आपको अपनी खुद की स्थिर प्रकार की घोषणा आदि जोड़नी होगी। –

+1

हां, मैं सहमत हूं, लेकिन मॉडल बनाने/प्रशिक्षित/फिट करने और भविष्यवाणी करने के लिए इसका उपयोग करने के लिए दो अलग-अलग विचार हैं। scikit RandomForestClassifier मॉडल बना देगा, आमतौर पर पेड़ संग्रह के रूप में एक अचार में संग्रहीत किया जाता है। हाई स्पीड आरटीबी संदर्भ में मुझे इस परिणामस्वरूप मॉडल का उपयोग "उपयोग/तेज करने" की आवश्यकता है, इसे कुछ सी ++ कोड में केवल अंतिम "वृक्ष सूप" को परिवर्तित करने की आवश्यकता है ताकि इसे तेज़ी से लागू किया जा सके। मैंने पीएमएमएल http://stackoverflow.com/questions/38431113/convert-a-pmml-describe-model-in-c-c देखा है लेकिन हमारे उपयोगकेस के लिए बहुत मदद नहीं करता है। – user3313834

उत्तर

1

प्रशिक्षित विज्ञान की पोर्टेबिलिटी के लिए अन्य भाषाओं में मॉडल सीखना, sklearn-porter प्रोजेक्ट देखें।

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

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