1. खास जानकारी
TensorFlow Lite और Firebase कोडलैब के साथ सुझावों में आपका स्वागत है. इस कोडलैब में, आपको TensorFlow Lite और Firebase के इस्तेमाल का तरीका पता चलेगा, ताकि आप अपने ऐप्लिकेशन पर सुझाव वाला मॉडल डिप्लॉय कर सकें. यह कोडलैब, TensorFlow Lite के इस उदाहरण पर आधारित है.
सुझावों की मदद से, ऐप्लिकेशन को मशीन लर्निंग का इस्तेमाल करके, हर उपयोगकर्ता के लिए सबसे काम का कॉन्टेंट दिखाने में मदद मिलती है. वे अन्य उपयोगकर्ताओं के एग्रीगेट व्यवहार के बारे में तैयार किए गए मॉडल का इस्तेमाल करके, उपयोगकर्ता के पिछले व्यवहार को ध्यान में रखते हैं, ताकि यह सुझाव दिया जा सके कि उपयोगकर्ता आने वाले समय में ऐप्लिकेशन का कॉन्टेंट इस्तेमाल कर सकते हैं या नहीं.
इस ट्यूटोरियल में Firebase Analytics की मदद से, अपने ऐप्लिकेशन के उपयोगकर्ताओं का डेटा हासिल करने और उस डेटा से मिलने वाले सुझावों के लिए मशीन लर्निंग मॉडल बनाने का तरीका बताया गया है. इसके बाद, अनुमान लगाने और सुझाव पाने के लिए, उस मॉडल को Android ऐप्लिकेशन में इस्तेमाल करने का तरीका भी बताया गया है. खास तौर पर, हम ऐसे सुझाव देंगे जो किसी उपयोगकर्ता को पहले पसंद की गई फ़िल्मों की सूची के हिसाब से दिखाए जाएंगे. इनमें से वे फ़िल्में जो किसी दर्शक को पसंद आएंगी.
आपको यह जानकारी मिलेगी
- उपयोगकर्ता के व्यवहार का डेटा इकट्ठा करने के लिए, Firebase Analytics को Android ऐप्लिकेशन के साथ इंटिग्रेट करें
- उस डेटा को Google Big Query में एक्सपोर्ट करना
- डेटा को पहले से प्रोसेस करना और TF Lite के सुझावों के मॉडल को ट्रेनिंग देना
- Firebase ML में TF Lite मॉडल को डिप्लॉय करें और इसे अपने ऐप्लिकेशन से ऐक्सेस करें
- उपयोगकर्ताओं को सुझाव देने के लिए, मॉडल का इस्तेमाल करके डिवाइस के अनुमान पर चलाएं
आपको इन चीज़ों की ज़रूरत होगी
- Android Studio का सबसे नया वर्शन.
- सैंपल कोड.
- आपके पास Android 7 या इसके बाद के वर्शन और Google Play services के साथ काम करने वाला टेस्ट डिवाइस हो.इसके अलावा, आपके पास Google Play services के 9.8 या इसके बाद के वर्शन वाला एम्युलेटर भी हो सकता है
- अगर डिवाइस का इस्तेमाल किया जा रहा है, तो कनेक्शन केबल.
इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?
Android ऐप्लिकेशन बनाने के आपके अनुभव को क्या रेटिंग मिलेगी?
2. सैंपल कोड पाएं
कमांड लाइन से, GitHub रिपॉज़िटरी का क्लोन बनाएं.
$ git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-android.git
3. स्टार्टर ऐप्लिकेशन इंपोर्ट करें
Android Studio में, सैंपल कोड डाउनलोड करने के विकल्प से codelab-recommendations-android
डायरेक्ट्री ( ) चुनें (फ़ाइल > खोलें > .../codelab-recommendations-android/start).
अब Android Studio में स्टार्ट प्रोजेक्ट खुल जाएगा.
4. Firebase कंसोल प्रोजेक्ट बनाएं
नया प्रोजेक्ट बनाना
- Firebase कंसोल पर जाएं.
- प्रोजेक्ट जोड़ें चुनें (या अगर यह पहला प्रोजेक्ट है, तो एक प्रोजेक्ट बनाएं).
- प्रोजेक्ट का नाम चुनें या डालें. इसके बाद, जारी रखें पर क्लिक करें.
- पक्का करें कि "इस प्रोजेक्ट के लिए Google Analytics चालू करें" चालू है.
- Firebase कंसोल में, सेटअप करने के बाकी चरण पूरे करें. इसके बाद, प्रोजेक्ट बनाएं पर क्लिक करें. अगर Google के किसी मौजूदा प्रोजेक्ट का इस्तेमाल किया जा रहा है, तो Firebase जोड़ें पर क्लिक करें.
5. Firebase जोड़ें
- अपने नए प्रोजेक्ट की खास जानकारी वाली स्क्रीन पर, सेटअप का वर्कफ़्लो लॉन्च करने के लिए Android आइकॉन पर क्लिक करें.
- कोडलैब के पैकेज का नाम डालें:
com.google.firebase.codelabs.recommendations
- ऐप्लिकेशन रजिस्टर करें चुनें.
अपने ऐप्लिकेशन में google-services.json फ़ाइल जोड़ना
पैकेज का नाम जोड़ने और 'रजिस्टर करें' को चुनने के बाद, Firebase में Android कॉन्फ़िगरेशन फ़ाइल पाने के लिए, google-services.json डाउनलोड करें पर क्लिक करें. इसके बाद, अपने प्रोजेक्ट की app
डायरेक्ट्री में google-services.json फ़ाइल को कॉपी करें. फ़ाइल डाउनलोड होने के बाद, कंसोल में दिखाए गए अगले चरणों को अभी नहीं किया जा सकता है. इन्हें बिल्ड-Android-स्टार्ट प्रोजेक्ट में आपके लिए पहले ही पूरा कर दिया गया है.
अपने ऐप्लिकेशन में Google की सेवाओं के लिए प्लगिन जोड़ना
Google-सेवाएं प्लग इन आपके ऐप्लिकेशन को Firebase का इस्तेमाल करने के लिए कॉन्फ़िगर करने के लिए google-services.json फ़ाइल का इस्तेमाल करता है. प्रोजेक्ट की create.gradle.kts फ़ाइलों में इन लाइनों को पहले से ही जोड़ा जाना चाहिए (पुष्टि करने के लिए सही का निशान लगाएं):
app/build.grade.kts
plugins {
id("com.google.gms.google-services")
}
build.grad.kts
plugins {
id("com.google.gms.google-services") version "4.3.15" apply false
}
Grele फ़ाइलों के साथ प्रोजेक्ट सिंक करना
यह पक्का करने के लिए कि आपके ऐप्लिकेशन पर सभी डिपेंडेंसी उपलब्ध हों, आपको इस समय अपने प्रोजेक्ट को Gradle फ़ाइलों के साथ सिंक करना चाहिए. फ़ाइल > चुनें Android Studio के टूलबार से, Gradle फ़ाइलों के साथ प्रोजेक्ट सिंक करें.
6. स्टार्टर ऐप्लिकेशन चलाएं
अब जब आपने Android Studio में प्रोजेक्ट इंपोर्ट कर लिया है और google-services
प्लगिन को अपनी JSON फ़ाइल के साथ कॉन्फ़िगर कर लिया है, तो अब आप इस ऐप्लिकेशन को पहली बार इस्तेमाल कर सकते हैं. अपना Android डिवाइस कनेक्ट करें और Android Studio टूलबार में Run ( ) पर क्लिक करें.
ऐप्लिकेशन आपके डिवाइस पर लॉन्च हो जाना चाहिए. यहां आपको एक ऐसा ऐप्लिकेशन दिखेगा जो ठीक से काम कर रहा है. इस टैब में फ़िल्मों की सूची, 'पसंद की गई फ़िल्में' टैब, और 'सुझाव' टैब मौजूद है. किसी फ़िल्म पर क्लिक करके, उसे अपनी पसंद की सूची में जोड़ा जा सकता है. कोडलैब के बाकी चरणों को पूरा करने के बाद, हम 'सुझाव' टैब में मूवी के सुझाव जनरेट कर पाएंगे.
7. ऐप्लिकेशन में Firebase Analytics जोड़ना
इस चरण में, उपयोगकर्ता व्यवहार डेटा (इस मामले में, उपयोगकर्ता को कौन सी फ़िल्में पसंद है) लॉग करने के लिए ऐप्लिकेशन में Firebase Analytics जोड़ें. इस डेटा का इस्तेमाल, आने वाले चरणों में एक साथ किया जाएगा, ताकि सुझावों के मॉडल को ट्रेनिंग दी जा सके.
Firebase बिल ऑफ़ मटीरियल और Analytics की डिपेंडेंसी जोड़ना
अपने ऐप्लिकेशन में Firebase Analytics जोड़ने के लिए निम्न निर्भरताएं आवश्यक हैं. वे पहले से ही app/build.gradle.kts फ़ाइल में शामिल होना चाहिए (पुष्टि करें).
app/build.grade.kts
implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")
ऐप्लिकेशन में Firebase Analytics सेट अप करना
LikedMoviesViewModel में, उपयोगकर्ता की पसंद की फ़िल्में सेव करने के लिए फ़ंक्शन होते हैं. जब भी कोई व्यक्ति किसी नई मूवी को पसंद करता है, तो हम उसे पसंद करने वाली फ़िल्म को रिकॉर्ड करने के लिए, आंकड़ों का लॉग इवेंट भी भेजना चाहते हैं.
जब उपयोगकर्ता किसी फ़िल्म पर पसंद की प्रतिक्रिया करता है, तो Analytics इवेंट को रजिस्टर करने के लिए, onMovieLiked फ़ंक्शन को नीचे दिए गए कोड के साथ जोड़ें.
LikedMoviesViewModel.kt
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.analytics.ktx.logEvent
import com.google.firebase.ktx.Firebase
class LikedMoviesViewModel internal constructor (application: Application) : AndroidViewModel(application) {
...
fun onMovieLiked(movie: Movie) {
movies.setLike(movie, true)
logAnalyticsEvent(movie.id.toString())
}
}
जब कोई फ़िल्म उपयोगकर्ता की पसंद की गई सूची में जोड़ी जाती है, तो Analytics इवेंट को लॉग करने के लिए, नीचे दिया गया फ़ील्ड और फ़ंक्शन जोड़ें.
LikedMoviesViewModel.kt
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.analytics.ktx.analytics
import com.google.firebase.analytics.ktx.logEvent
import com.google.firebase.ktx.Firebase
class LikedMoviesViewModel internal constructor (application: Application) : AndroidViewModel(application) {
...
private val firebaseAnalytics = Firebase.analytics
...
/**
* Logs an event in Firebase Analytics that is used in aggregate to train the recommendations
* model.
*/
private fun logAnalyticsEvent(id: String) {
firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
param(FirebaseAnalytics.Param.ITEM_ID, id)
}
}
8. Analytics इंटिग्रेशन की जांच करना
इस चरण में, हम ऐप्लिकेशन में Analytics इवेंट जनरेट करेंगे और पुष्टि करेंगे कि उन्हें Firebase कंसोल पर भेजा जा रहा है.
Analytics डीबग लॉगिंग चालू करें
Firebase Analytics को उपयोगकर्ता की बैटरी लाइफ़ बढ़ाने के लिए डिज़ाइन किया गया है. यह डिवाइस पर इवेंट के बैच बनाकर उन्हें कभी-कभी ही Firebase पर भेजेगा. डीबग करने के मकसद से, हम इवेंट देखने के लिए इस व्यवहार को बंद कर सकते हैं, क्योंकि वे रीयल टाइम में लॉग इन होते हैं. इसके लिए, शेल में नीचे दिया गया कमांड चलाएं.
टर्मिनल
adb shell setprop debug.firebase.analytics.app com.google.firebase.codelabs.recommendations
Analytics इवेंट के जनरेट होने की पुष्टि करना
- अपने ऐप्लिकेशन से लॉगिंग की जांच करने के लिए Android Studio में, Logcat विंडो खोलें.
- "लॉगिंग इवेंट" स्ट्रिंग पर Logcat फ़िल्टर सेट करें.
- "select_item" की पुष्टि करें जब भी आप ऐप्लिकेशन में किसी मूवी को पसंद करते हैं, तब Analytics इवेंट भेज दिए जाते हैं.
अब आपने अपने ऐप्लिकेशन में Firebase Analytics को सफलतापूर्वक इंटिग्रेट कर लिया है. जब लोग आपके ऐप्लिकेशन का इस्तेमाल करते हैं और फ़िल्में पसंद करते हैं, तब उनकी पसंद की जानकारी एग्रीगेट के तौर पर लॉग की जाएगी. हम इस इकट्ठा किए गए डेटा का इस्तेमाल, कोडलैब के बाकी हिस्सों में अपने सुझाव मॉडल को ट्रेनिंग देने के लिए करेंगे. यह चरण वैकल्पिक है. इससे, उन Analytics इवेंट को देखा जा सकता है जो आपको Logcat में दिखते हैं. ये इवेंट, Firebase कंसोल में भी स्ट्रीम होते हैं. अगले पेज पर जाएं.
ज़रूरी नहीं: Firebase कंसोल में Analytics इवेंट की पुष्टि करना
- Firebase कंसोल पर जाएं.
- Analytics में जाकर, DebugView चुनें
- Android Studio में, ऐप्लिकेशन लॉन्च करने और अपनी पसंद की सूची में कुछ फ़िल्में जोड़ने के लिए, Run चुनें.
- Firebase कंसोल के DebugView में, पुष्टि करें कि ऐप्लिकेशन में फ़िल्में जोड़ने के दौरान ये इवेंट लॉग किए जा रहे हैं.
9. Analytics डेटा को Big Query में एक्सपोर्ट करें
Big Query, Google Cloud का एक प्रॉडक्ट है. इसकी मदद से, बड़ी मात्रा में डेटा की जांच और उसे प्रोसेस किया जा सकता है. इस चरण में, आप अपने Firebase कंसोल प्रोजेक्ट को Big Query से कनेक्ट करेंगे, ताकि आपके ऐप्लिकेशन से जनरेट हुआ Analytics डेटा अपने-आप Big Query में एक्सपोर्ट हो जाए.
Big Query एक्सपोर्ट चालू करें
- Firebase कंसोल पर जाएं.
- प्रोजेक्ट की खास जानकारी के बगल में मौजूद, सेटिंग गियर आइकॉन चुनें. इसके बाद, प्रोजेक्ट सेटिंग चुनें
- इंटिग्रेशन टैब चुनें.
- BigQuery ब्लॉक में लिंक करें (या मैनेज करें) चुनें.
- Firebase को BigQuery से लिंक करने के बारे में जानकारी चरण में, आगे बढ़ें चुनें.
- इंटिग्रेशन कॉन्फ़िगर करें सेक्शन में, Google Analytics का डेटा भेजने की सुविधा चालू करने के लिए, स्विच पर क्लिक करें. इसके बाद, BigQuery से जोड़ें चुनें.
अब आपने अपने Firebase कंसोल प्रोजेक्ट को चालू कर लिया है, ताकि Firebase Analytics इवेंट डेटा को Big Query पर अपने-आप भेजा जा सके. यह प्रोसेस अपने-आप होती है, लेकिन इसके लिए आपको कोई अन्य इंटरैक्शन नहीं करना पड़ता. हालांकि, ऐसा हो सकता है कि BigQuery में पहली बार Analytics का डेटासेट बनाने वाला एक्सपोर्ट 24 घंटे तक ही चालू रहे. डेटासेट बनाने के बाद, Firebase इंट्रा-डे टेबल में BigQuery में Analytics के नए इवेंट लगातार एक्सपोर्ट करता है. साथ ही, पिछले दिनों के इवेंट को इवेंट टेबल में ग्रुप करता है.
सुझावों के मॉडल को ट्रेनिंग देने के लिए, बहुत ज़्यादा डेटा की ज़रूरत होती है. हमारे पास पहले से ज़्यादा डेटा जनरेट करने वाला ऐप्लिकेशन नहीं है, इसलिए अगले चरण में हम BigQuery में एक सैंपल डेटासेट इंपोर्ट करेंगे, ताकि इसका इस्तेमाल बाकी ट्यूटोरियल में किया जा सके.
10. मॉडल ट्रेनिंग डेटा पाने के लिए BigQuery का इस्तेमाल करना
अब हमने BigQuery में एक्सपोर्ट करने के लिए, Firebase कंसोल कनेक्ट कर दिया है. इसलिए, अब ऐप्लिकेशन के आंकड़ों का इवेंट डेटा, कुछ समय बाद अपने-आप BigQuery कंसोल में दिखने लगेगा. इस ट्यूटोरियल के मकसद से कुछ शुरुआती डेटा पाने के लिए, इस चरण में हम आपके BigQuery कंसोल में मौजूदा सैंपल डेटासेट इंपोर्ट करेंगे. इसका इस्तेमाल करके, हम आपके सुझाव वाले मॉडल को ट्रेनिंग देंगे.
BigQuery में सैंपल डेटासेट इंपोर्ट करें
- Google Cloud Console में BigQuery डैशबोर्ड पर जाएं.
- मेन्यू में अपने प्रोजेक्ट का नाम चुनें.
- जानकारी देखने के लिए BigQuery में बाईं ओर मौजूद नेविगेशन के निचले हिस्से में अपने प्रोजेक्ट का नाम चुनें.
- डेटासेट बनाने वाला पैनल खोलने के लिए, डेटासेट बनाएं चुनें.
- 'firebase_recommendations_dataset' डालें डेटासेट आईडी के लिए और डेटासेट बनाएं चुनें.
- नया डेटासेट, प्रोजेक्ट के नाम के नीचे बाएं मेन्यू में दिखेगा. उसे क्लिक करें.
- टेबल बनाने का पैनल खोलने के लिए, टेबल बनाएं चुनें.
- इससे टेबल बनाएं के लिए, ‘Google Cloud Storage' चुनें.
- GCS बकेट से फ़ाइल चुनें फ़ील्ड में, ‘gs://firebase-recommendations/recommendations-test/Format_data_filtered.txt' डालें.
- 'JSONL' चुनें को फ़ाइल फ़ॉर्मैट ड्रॉप-डाउन में डालें.
- 'recommendations_table' एट्रिब्यूट की वैल्यू डालें टेबल के नाम के लिए.
- स्कीमा > अपने आप पता लगाएं > स्कीमा और इनपुट पैरामीटर
- टेबल बनाएं चुनें
सैंपल डेटासेट एक्सप्लोर करें
इस समय, वैकल्पिक तौर पर स्कीमा को एक्सप्लोर किया जा सकता है और इस डेटासेट की झलक देखी जा सकती है.
- इसमें शामिल टेबल को बड़ा करने के लिए, बाईं ओर मौजूद मेन्यू में firebase-recommendations-dataset को चुनें.
- टेबल स्कीमा देखने के लिए सुझावों की टेबल चुनें.
- इस टेबल में मौजूद Analytics इवेंट का असल डेटा देखने के लिए, झलक देखें चुनें.
सेवा खाते के क्रेडेंशियल बनाएं
अब हम अपने Google Cloud Console प्रोजेक्ट में, सेवा खाते के क्रेडेंशियल बनाएंगे. इन्हें हम अगले चरण में Colab की मदद से इस्तेमाल करके, अपने BigQuery डेटा को ऐक्सेस और लोड करेंगे.
- पक्का करें कि आपके Google Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो.
- BigQuery और BigQuery Storage API एपीआई चालू करें. < यहां क्लिक करें>
- सेवा खाते के लिए पासकोड बनाने वाले पेज पर जाएं.
- सेवा खाता सूची से, नया सेवा खाता चुनें.
- सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
- भूमिका सूची से, प्रोजेक्ट चुनें > मालिक.
- बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड की गई कुंजी शामिल होती हैं.
अगले चरण में, हम इस डेटा को पहले से प्रोसेस करने और सुझावों के मॉडल को ट्रेनिंग देने के लिए, Google Colab का इस्तेमाल करेंगे.
11. डेटा और ट्रेन के सुझावों का मॉडल पहले से प्रोसेस करना
इस चरण में, हम यह तरीका अपनाने के लिए Colab notebook का इस्तेमाल करेंगे:
- BigQuery डेटा को Colab notebook में इंपोर्ट करें
- डेटा को मॉडल ट्रेनिंग के लिए तैयार करने के लिए, उसे पहले से प्रोसेस कर सकता है
- आंकड़ों के डेटा पर सुझावों के मॉडल को ट्रेनिंग दे
- इस मॉडल को TF lite मॉडल के तौर पर एक्सपोर्ट करना
- मॉडल को Firebase कंसोल में डिप्लॉय करें, ताकि हम इसे अपने ऐप्लिकेशन में इस्तेमाल कर सकें
Colab ट्रेनिंग notebook को लॉन्च करने से पहले, हम Firebase मॉडल मैनेजमेंट एपीआई को चालू करेंगे. इससे Colab, ट्रेन किए गए मॉडल को हमारे Firebase कंसोल पर डिप्लॉय कर सकेगा.
Firebase मॉडल मैनेजमेंट एपीआई चालू करें
अपने एमएल मॉडल स्टोर करने के लिए बकेट बनाना
अपने Firebase कंसोल में, स्टोरेज पर जाएं और 'शुरू करें' पर क्लिक करें. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
अपनी बकेट सेट अप करने के लिए, डायलॉग बोलें.
Firebase ML API चालू करना
Google Cloud Console में, Firebase ML API पेज पर जाएं और 'चालू करें' पर क्लिक करें.
मॉडल को ट्रेनिंग देने और डिप्लॉय करने के लिए, Colab notebook का इस्तेमाल करें
नीचे दिए गए लिंक का इस्तेमाल करके, कोलैब नोटबुक खोलें और इसमें दिए गए चरणों को पूरा करें. Colab notebook के चरणों को पूरा करने के बाद, आपके पास Firebase कंसोल पर TF lite मॉडल की फ़ाइल होगी, जिसे हम अपने ऐप्लिकेशन से सिंक कर सकते हैं.
Colab में खोलें
12. अपने ऐप्लिकेशन में मॉडल डाउनलोड करें
इस चरण में, हम अपने ऐप्लिकेशन में बदलाव करेंगे, ताकि हम उस मॉडल को डाउनलोड कर सकें जिसे हमने Firebase मशीन लर्निंग से ट्रेनिंग दी है.
Firebase ML डिपेंडेंसी जोड़ें
अपने ऐप्लिकेशन में Firebase के मशीन लर्निंग मॉडल का इस्तेमाल करने के लिए, इन डिपेंडेंसी की ज़रूरत होती है. इसे पहले से ही जोड़ा जाना चाहिए (पुष्टि करें).
app/build.grade.kts
implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")
Firebase मॉडल मैनेजर एपीआई की मदद से मॉडल डाउनलोड करना
जिन स्थितियों में मॉडल डाउनलोड होता है उन्हें सेट अप करने के लिए, नीचे दिए गए कोड को सुझावClient.kt में कॉपी करें. इसके बाद, हमारे ऐप्लिकेशन के साथ रिमोट मॉडल को सिंक करने के लिए डाउनलोड टास्क बनाएं.
सुझावोंClient.kt
private fun downloadModel(modelName: String) {
val conditions = CustomModelDownloadConditions.Builder()
.requireWifi()
.build()
FirebaseModelDownloader.getInstance()
.getModel(modelName, DownloadType.LOCAL_MODEL, conditions)
.addOnCompleteListener {
if (!it.isSuccessful) {
showToast(context, "Failed to get model file.")
} else {
showToast(context, "Downloaded remote model: $modelName")
GlobalScope.launch { initializeInterpreter(it.result) }
}
}
.addOnFailureListener {
showToast(context, "Model download failed for recommendations, please check your connection.")
}
}
13. Tensorflow Lite के सुझाव मॉडल को अपने ऐप्लिकेशन में इंटिग्रेट करें
Tensorflow Lite रनटाइम की मदद से, ऐप्लिकेशन में अपने मॉडल का इस्तेमाल करके सुझाव जनरेट किए जा सकते हैं. पिछले चरण में, हमने डाउनलोड की गई मॉडल फ़ाइल के साथ TFlite अनुवादक मोड को शुरू किया. इस चरण में, हम अनुमान वाले चरण में अपने मॉडल के साथ देने के लिए, सबसे पहले डिक्शनरी और लेबल लोड करेंगे. इसके बाद, हम अपने मॉडल और पोस्ट-प्रोसेस में इनपुट जनरेट करने के लिए प्री-प्रोसेसिंग को जोड़ेंगे, जहां हम अपने अनुमान से नतीजे निकालेंगे.
शब्दकोश और लेबल लोड करें
सुझाव मॉडल के हिसाब से सुझाव जनरेट करने के लिए इस्तेमाल किए जाने वाले लेबल, res/assets फ़ोल्डर में sorted_movie_vo करेंगे.json फ़ाइल में मौजूद हैं. इन उम्मीदवारों को लोड करने के लिए निम्न कोड की कॉपी करें.
सुझावClient.kt
/** Load recommendation candidate list. */
private suspend fun loadCandidateList() {
return withContext(Dispatchers.IO) {
val collection = MovieRepository.getInstance(context).getContent()
for (item in collection) {
candidates[item.id] = item
}
Log.v(TAG, "Candidate list loaded.")
}
}
प्री-प्रोसेसिंग लागू करें
प्री-प्रोसेसिंग चरण में, हम इनपुट डेटा का रूप बदल देते हैं, ताकि वह हमारे मॉडल की उम्मीद के मुताबिक हो. अगर हमने उपयोगकर्ताओं के लाइक बहुत ज़्यादा नहीं बनाए हैं, तो यहां हम इनपुट की लंबाई को प्लेसहोल्डर वैल्यू से जोड़ते हैं. नीचे दिया गया कोड कॉपी करें:
सुझावोंClient.kt
/** Given a list of selected items, preprocess to get tflite input. */
@Synchronized
private suspend fun preprocess(selectedMovies: List<Movie>): IntArray {
return withContext(Dispatchers.Default) {
val inputContext = IntArray(config.inputLength)
for (i in 0 until config.inputLength) {
if (i < selectedMovies.size) {
val (id) = selectedMovies[i]
inputContext[i] = id
} else {
// Padding input.
inputContext[i] = config.pad
}
}
inputContext
}
}
सुझाव जनरेट करने के लिए अनुवादक मोड का इस्तेमाल करें
यहां हम अपने पहले से प्रोसेस किए गए इनपुट पर अनुमान चलाने के लिए, पिछले चरण में डाउनलोड किए गए मॉडल का इस्तेमाल करते हैं. हम अपने मॉडल के लिए इनपुट और आउटपुट का टाइप सेट करते हैं और अनुमान का इस्तेमाल करके, फ़िल्मों के सुझाव जनरेट करते हैं. इस कोड को अपने ऐप्लिकेशन में कॉपी करें.
सुझावोंClient.kt
/** Given a list of selected items, and returns the recommendation results. */
@Synchronized
suspend fun recommend(selectedMovies: List<Movie>): List<Result> {
return withContext(Dispatchers.Default) {
val inputs = arrayOf<Any>(preprocess(selectedMovies))
// Run inference.
val outputIds = IntArray(config.outputLength)
val confidences = FloatArray(config.outputLength)
val outputs: MutableMap<Int, Any> = HashMap()
outputs[config.outputIdsIndex] = outputIds
outputs[config.outputScoresIndex] = confidences
tflite?.let {
it.runForMultipleInputsOutputs(inputs, outputs)
postprocess(outputIds, confidences, selectedMovies)
} ?: run {
Log.e(TAG, "No tflite interpreter loaded")
emptyList()
}
}
}
पोस्ट-प्रोसेसिंग लागू करना
आखिर में, इस चरण में हम अपने मॉडल से आउटपुट को प्रोसेस करते हैं. इसके लिए, सबसे ज़्यादा भरोसेमंद नतीजों को चुना जाता है और शामिल वैल्यू (वे फ़िल्में जिन्हें उपयोगकर्ता ने पहले ही पसंद किया है) हटा देते हैं. इस कोड को अपने ऐप्लिकेशन में कॉपी करें.
सुझावClient.kt
/** Postprocess to gets results from tflite inference. */
@Synchronized
private suspend fun postprocess(
outputIds: IntArray, confidences: FloatArray, selectedMovies: List<Movie>
): List<Result> {
return withContext(Dispatchers.Default) {
val results = ArrayList<Result>()
// Add recommendation results. Filter null or contained items.
for (i in outputIds.indices) {
if (results.size >= config.topK) {
Log.v(TAG, String.format("Selected top K: %d. Ignore the rest.", config.topK))
break
}
val id = outputIds[i]
val item = candidates[id]
if (item == null) {
Log.v(TAG, String.format("Inference output[%d]. Id: %s is null", i, id))
continue
}
if (selectedMovies.contains(item)) {
Log.v(TAG, String.format("Inference output[%d]. Id: %s is contained", i, id))
continue
}
val result = Result(
id, item,
confidences[i]
)
results.add(result)
Log.v(TAG, String.format("Inference output[%d]. Result: %s", i, result))
}
results
}
}
अपने ऐप्लिकेशन की जांच करें!
अपना ऐप्लिकेशन फिर से चलाएं. जैसे-जैसे कुछ फ़िल्में चुनी जाती हैं, वैसे-वैसे नया मॉडल अपने-आप डाउनलोड हो जाता है और सुझाव जनरेट होने लगते हैं!
14. बधाई हो!
आपने TensorFlow Lite और Firebase का इस्तेमाल करके, अपने ऐप्लिकेशन में सुझाव देने वाली सुविधा बनाई है. ध्यान दें कि इस कोडलैब में दिखाई गई तकनीकों और पाइपलाइन को सामान्य बनाया जा सकता है. इनका इस्तेमाल दूसरी तरह के सुझाव देने के लिए भी किया जा सकता है.
हमने इन विषयों के बारे में बताया
- Firebase ML
- Firebase Analytics
- आंकड़ों वाले इवेंट को BigQuery में एक्सपोर्ट करना
- आंकड़ों के इवेंट को पहले ही प्रोसेस करना
- ट्रेन से जुड़े सुझाव TensorFlow मॉडल
- मॉडल एक्सपोर्ट करें और Firebase कंसोल में डिप्लॉय करें
- ऐप्लिकेशन में फ़िल्मों के सुझाव देना
अगले चरण
- अपने ऐप्लिकेशन में Firebase एमएल के सुझाव लागू करें.