2017-03-17 32 views
8

मैं एंड्रॉइड के लिए पाइथन बाइंडिंग के साथ टेन्सफोर्लो कोर बनाने की कोशिश कर रहा हूं - एंड्रॉइड में एक किवी ऐप से इस्तेमाल किया जा सकता है, लेकिन यह सुनिश्चित नहीं है कि पाइथन बाइंडिंग कैसे काम कर रही है।टेन्सफोर्लो?

bazel build -c opt \ 
    --crosstool_top=//external:android/crosstool \ 
    --cpu=armeabi-v7a \ 
    [email protected]_tools//tools/cpp:toolchain \ 
    --verbose_failures \ 
    //tensorflow/core:android_tensorflow_lib 

किसी को भी यह करने के लिए पायथन बाइंडिंग जोड़ने के बारे में पता है:

Android के लिए Tensorflow कोर संकलन निम्नलिखित के साथ काम करता है? क्या यह भी संभव है?

मैंने दस्तावेज़ों को पढ़ा है, बहुत सारी खोज की है, लेकिन इसके बारे में कोई भाग्य नहीं है। मैंने देखा कि कई अन्य लोग टिस्फोर्लो को किवी (एंड्रॉइड और आईओएस दोनों के लिए) पर काम करने में भी रूचि रखते हैं, लेकिन कोई भी अब तक ऐसा नहीं कर रहा है। लोगों को केवल इतना कह रहा है कि हमें एक अजगर के लिए एंड्रॉइड रेसिपी की आवश्यकता होगी, लेकिन रेसिपी के लिए पहला कदम पाइथन बाइंडिंग के साथ एंड्रॉइड के लिए बनाना है, इसलिए ऊपर सवाल है।

उत्तर

3

नोट: मैं Tensorflow


pypi से आंकना यहाँ केवल निर्भरता समस्या NumPy हो सकता है के साथ काम नहीं किया है, लेकिन वहाँ एक recipe for it है। तो, हमारे पास NumPy है, लेकिन Tensorflow के लिए कोई नुस्खा नहीं है। अब क्या?

उत्तर नुस्खा बनाने के तरीके पर documentation में उत्तर है।

सबसे पहले मैं पहले से ही काम कर रहा व्यंजनों को देखो चाहते हैं, वास्तव में, समझने के लिए वे कैसे काम करते विशेषकर वे, जो सी/सी के साथ काम ++ और नहीं Cython साथ यह Cython के लिए एक नुस्खा (बनाने के लिए एक छोटा सा आसान है के रूप में यदि आपने कोड बनाया है तो भी अधिक)।

इन व्यंजनों हैं मैं Tensorflow के लिए एक नुस्खा बनाने के लिए एक बुनियादी पत्थर पर विचार करें:

उनमें से हर एक हिस्सा आप में मदद मिलेगी है एक काम कर रहे नुस्खा इकट्ठा करने के लिए। अब, बाइंडिंग के साथ एक समस्या है। manylinux पहियों हैं, लेकिन सबसे अधिक संभावना है कि वे एंड्रॉइड (पर सभी पर) की स्थिति में आपकी सहायता नहीं करेंगे। इसलिए आपको स्रोत (स्पष्ट रूप से) से निर्माण करने की आवश्यकता होगी और उनके पास उस हिस्से से संबंधित a whole folder है।

जो हमें bazel कोड के आपके टुकड़े तक ले जाता है। build_pip_package.sh में बेज़ेल चीज़ से संबंधित कई रेखाएं हैं।

तो, के बाद आप समझ कैसे व्यंजनों काम वहाँ दो संभावनाएं हैं:

  • कोड के अपने टुकड़ा वास्तव में कुछ करता है और एंड्रॉयड
  • अपने कोड के लिए यह बनाता है बेकार है

यदि आपका कोड वास्तव में काम करता है, तो एक अच्छा मौका है कि आप पहले से बनाए गए setup.py फ़ाइल को एक साधारण रूप में जोड़ सकेंगे आईएनजी रेसिपी उम्मीद है कि बस एक और मंच जांच के साथ (और सही bazel बाइनरी I का अनुमान लगाएं)। चूंकि पहले से ही setup.py फ़ाइल है, पैकेज फ़ाइलों को पाइथन में ले जाया जाना चाहिए जो एंड्रॉइड के लिए संकलित है।

दूसरी ओर यदि आपके द्वारा ऊपर चिपकाए गए कोड का टुकड़ा बेकार है, तो आप शायद अपने कोड को संकलित करने के साथ समाप्त हो जाएंगे + एक नुस्खा के रूप में केवल पी 4 ए के लिए अपने setup.py को पुन: पेश करेंगे। यदि आप स्रोत से निर्माण के लिए आवश्यक संकलन चरणों से परिचित नहीं हैं, तो मैं वास्तव में आपको प्रक्रिया को ईर्ष्या नहीं देता हूं।


यह भी आकार अंतिम APK के उल्लेख करने के लिए एक अच्छी बात हो सकती है। आप विंडोज़ के लिए 13 एमबी के एक छोटे से पहिया के साथ पीईपीआई पर टेन्सफोर्लो देख सकते हैं। मैनिलिनक्स पहियों, हालांकि, विशाल (37-42 एमबी) हैं और मुझे लगता है कि आप एंड्रॉइड के लिए उन दोनों के बीच एक आकार के साथ समाप्त हो जाएंगे यदि आप टेन्सफोर्लो से कुछ और स्थापित करने की योजना बना रहे हैं। हमेशा NumPy हमेशा आपको निर्भरता के रूप में फोन पर खींचना होगा। तो यह आपको ~ 50 एमबी + एपीके फ़ाइल देता है, जो वास्तव में वांछित नहीं हो सकता है (आप पर निर्भर करता है)।

This piece of code उनके रेपो में पायथन से संबंधित आपकी मदद भी कर सकता है।

+0

विस्तृत निर्देशों के लिए धन्यवाद। बहुत गहन। दुर्भाग्यवश मेरी समस्या एंड्रॉइड के लिए टेन्सफोर्लो संकलन प्राप्त कर रही है (प्रश्न में मेरा संकलन कोड देखें) ताकि पाइथन बाध्यकारी शामिल हो सके, इसलिए कोई setup.py उत्पन्न नहीं हो रहा है। मैं उम्मीद कर रहा था कि टेन्सफोर्लो लोग यहां चिपकेंगे, क्योंकि वे स्टैक ओवरफ्लो पर उठाए जाने वाले प्रश्नों का सुझाव देते हैं और उन्हें उन पर नजर रखने की आवश्यकता है। किसी भी मामले में, किवी रेसिपी के लिए सामान्य रणनीति के बहुत विस्तृत विवरण के लिए धन्यवाद। –

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