TensorFlow Lite और Firebase - iOS Codelab के साथ अपने ऐप में अनुशंसाएँ जोड़ें

1 अवलोकन

TensorFlow Lite और Firebase कोडलैब की अनुशंसाओं में आपका स्वागत है। इस कोडलैब में आप सीखेंगे कि अपने ऐप में अनुशंसा मॉडल को तैनात करने के लिए TensorFlow Lite और Firebase का उपयोग कैसे करें। यह कोडलैब इस TensorFlow Lite उदाहरण पर आधारित है।

सिफ़ारिशें ऐप्स को प्रत्येक उपयोगकर्ता के लिए सबसे प्रासंगिक सामग्री को बुद्धिमानी से परोसने के लिए मशीन लर्निंग का उपयोग करने की अनुमति देती हैं। वे बड़ी संख्या में अन्य उपयोगकर्ताओं के समग्र व्यवहार पर प्रशिक्षित मॉडल का उपयोग करके ऐप की उस सामग्री का सुझाव देने के लिए उपयोगकर्ता के पिछले व्यवहार को ध्यान में रखते हैं जिसके साथ उपयोगकर्ता भविष्य में बातचीत करना पसंद कर सकता है।

यह ट्यूटोरियल दिखाता है कि फायरबेस एनालिटिक्स के साथ अपने ऐप के उपयोगकर्ताओं से डेटा कैसे प्राप्त करें, उस डेटा से सिफारिशों के लिए एक मशीन लर्निंग मॉडल कैसे बनाएं, और फिर अनुमान चलाने और सिफारिशें प्राप्त करने के लिए आईओएस ऐप में उस मॉडल का उपयोग करें। विशेष रूप से, हमारी सिफ़ारिशें यह सुझाएंगी कि उपयोगकर्ता द्वारा पहले पसंद की गई फिल्मों की सूची को देखते हुए उपयोगकर्ता कौन सी फिल्में देखना पसंद करेगा।

आप क्या सीखेंगे

  • उपयोगकर्ता व्यवहार डेटा एकत्र करने के लिए फायरबेस एनालिटिक्स को एंड्रॉइड ऐप में एकीकृत करें
  • उस डेटा को Google बिग क्वेरी में निर्यात करें
  • डेटा को प्री-प्रोसेस करें और टीएफ लाइट अनुशंसा मॉडल को प्रशिक्षित करें
  • टीएफ लाइट मॉडल को फायरबेस एमएल पर तैनात करें और इसे अपने ऐप से एक्सेस करें
  • उपयोगकर्ताओं को अनुशंसाएँ सुझाने के लिए मॉडल का उपयोग करके डिवाइस पर अनुमान चलाएँ

आपको किस चीज़ की ज़रूरत पड़ेगी

  • Xcode 11 (या उच्चतर)
  • कोकोपोड्स 1.9.1 (या उच्चतर)

आप इस ट्यूटोरियल का उपयोग कैसे करेंगे?

इसे केवल पूरा पढ़ें इसे पढ़ें और अभ्यास पूरा करें

iOS ऐप्स बनाने में आपके अनुभव का मूल्यांकन कैसे किया जाएगा?

नौसिखिए मध्यवर्ती प्रवीण

2. फायरबेस कंसोल प्रोजेक्ट बनाएं

प्रोजेक्ट में फायरबेस जोड़ें

  1. फायरबेस कंसोल पर जाएं।
  2. नया प्रोजेक्ट बनाएं चुनें और अपने प्रोजेक्ट को "फायरबेस एमएल आईओएस कोडेलैब" नाम दें।

3. नमूना परियोजना प्राप्त करें

कोड डाउनलोड करें

नमूना प्रोजेक्ट की क्लोनिंग करके और प्रोजेक्ट निर्देशिका में pod update चलाकर शुरुआत करें:

git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-ios.git
cd codelab-contentrecommendation-ios/start
pod install --repo-update

यदि आपके पास git स्थापित नहीं है, तो आप नमूना प्रोजेक्ट को इसके GitHub पेज से या इस लिंक पर क्लिक करके भी डाउनलोड कर सकते हैं। एक बार जब आप प्रोजेक्ट डाउनलोड कर लें, तो इसे Xcode में चलाएँ और यह कैसे काम करता है, यह जानने के लिए अनुशंसा के साथ खेलें।

फायरबेस सेट करें

नया फायरबेस प्रोजेक्ट बनाने के लिए दस्तावेज़ का पालन करें। एक बार जब आपको अपना प्रोजेक्ट मिल जाए, तो फायरबेस कंसोल से अपने प्रोजेक्ट की GoogleService-Info.plist फ़ाइल डाउनलोड करें और इसे Xcode प्रोजेक्ट के रूट पर खींचें।

4a923d5c7ae0d8f3.png

अपने पॉडफ़ाइल में फ़ायरबेस जोड़ें और पॉड इंस्टॉल चलाएँ।

pod 'FirebaseAnalytics'
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
pod 'TensorFlowLiteSwift'

अपने AppDelegate की didFinishLaunchingWithOptions विधि में, फ़ाइल के शीर्ष पर Firebase आयात करें

import FirebaseCore

और फायरबेस को कॉन्फ़िगर करने के लिए एक कॉल जोड़ें।

FirebaseApp.configure()

यह सुनिश्चित करने के लिए प्रोजेक्ट को दोबारा चलाएं कि ऐप सही तरीके से कॉन्फ़िगर किया गया है और लॉन्च पर क्रैश नहीं होता है।

  1. सुनिश्चित करें कि "इस प्रोजेक्ट के लिए Google Analytics सक्षम करें" सक्षम है।
  2. फायरबेस कंसोल में शेष सेटअप चरणों का पालन करें, फिर प्रोजेक्ट बनाएं पर क्लिक करें (या यदि आप मौजूदा Google प्रोजेक्ट का उपयोग कर रहे हैं तो फायरबेस जोड़ें)।

4. ऐप में फायरबेस एनालिटिक्स जोड़ें

इस चरण में, आप उपयोगकर्ता व्यवहार डेटा (इस मामले में, उपयोगकर्ता को कौन सी फिल्में पसंद हैं) लॉग करने के लिए ऐप में फायरबेस एनालिटिक्स जोड़ देंगे। इस डेटा का उपयोग अनुशंसा मॉडल को प्रशिक्षित करने के लिए भविष्य के चरणों में समग्र रूप से किया जाएगा।

ऐप में फायरबेस एनालिटिक्स सेट करें

लाइक्डमूवीज़व्यूमॉडल में उपयोगकर्ता द्वारा पसंद की जाने वाली फिल्मों को संग्रहीत करने के फ़ंक्शन शामिल हैं। हर बार जब उपयोगकर्ता को कोई नई फिल्म पसंद आती है, तो हम उस पसंद को रिकॉर्ड करने के लिए एक एनालिटिक्स लॉग इवेंट भी भेजना चाहते हैं।

जब उपयोगकर्ता किसी मूवी पर क्लिक करता है तो एक एनालिटिक्स इवेंट पंजीकृत करने के लिए नीचे दिया गया कोड जोड़ें।

AllMoviesCollectionViewController.swift

import FirebaseAnalytics
//


override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
//

if movie.liked == nil {
      movie.liked = true
      Analytics.logEvent(AnalyticsEventSelectItem, parameters: [AnalyticsParameterItemID: movie.id])
    } else {
      movie.liked?.toggle()
    }
       
}

5. अपने एनालिटिक्स एकीकरण का परीक्षण करें

इस चरण में, हम ऐप में एनालिटिक्स इवेंट जेनरेट करेंगे और सत्यापित करेंगे कि उन्हें फायरबेस कंसोल पर भेजा जा रहा है।

एनालिटिक्स डिबग लॉगिंग सक्षम करें

आम तौर पर, आपके ऐप द्वारा लॉग किए गए ईवेंट को लगभग एक घंटे की अवधि में एक साथ बैच किया जाता है और एक साथ अपलोड किया जाता है। यह दृष्टिकोण अंतिम उपयोगकर्ताओं के उपकरणों पर बैटरी बचाता है और नेटवर्क डेटा उपयोग को कम करता है। हालाँकि, अपने एनालिटिक्स कार्यान्वयन को मान्य करने के उद्देश्य से (और, डिबगव्यू रिपोर्ट में अपने एनालिटिक्स को देखने के लिए), आप न्यूनतम देरी के साथ ईवेंट अपलोड करने के लिए अपने विकास डिवाइस पर डिबग मोड को सक्षम कर सकते हैं।

अपने विकास उपकरण पर एनालिटिक्स डिबग मोड को सक्षम करने के लिए, Xcode में निम्नलिखित कमांड लाइन तर्क निर्दिष्ट करें:

-FIRDebugEnabled

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

वैकल्पिक: फायरबेस कंसोल में एनालिटिक्स इवेंट की पुष्टि करें

  1. फायरबेस कंसोल पर जाएं।
  2. Analytics के अंतर्गत DebugView चुनें
  3. Xcode में, ऐप लॉन्च करने के लिए रन का चयन करें और अपनी पसंद की गई सूची में कुछ फिल्में जोड़ें।
  4. फायरबेस कंसोल के डीबगव्यू में, सत्यापित करें कि जैसे ही आप ऐप में फिल्में जोड़ते हैं ये इवेंट लॉग हो रहे हैं।

6. एनालिटिक्स डेटा को बिग क्वेरी में निर्यात करें

बिग क्वेरी एक Google क्लाउड उत्पाद है जो आपको बड़ी मात्रा में डेटा की जांच और प्रसंस्करण करने की अनुमति देता है। इस चरण में, आप अपने फायरबेस कंसोल प्रोजेक्ट को बिग क्वेरी से कनेक्ट करेंगे ताकि आपके ऐप द्वारा उत्पन्न एनालिटिक्स डेटा स्वचालित रूप से बिग क्वेरी में निर्यात हो जाए।

बड़ी क्वेरी निर्यात सक्षम करें

  1. फायरबेस कंसोल पर जाएं।
  2. प्रोजेक्ट अवलोकन के आगे सेटिंग्स गियर आइकन का चयन करें और फिर प्रोजेक्ट सेटिंग्स का चयन करें
  3. एकीकरण टैब चुनें.
  4. BigQuery ब्लॉक के अंदर लिंक (या प्रबंधित करें ) का चयन करें।
  5. Firebase को BigQuery से लिंक करने के बारे में चरण में अगला चुनें।
  6. एकीकरण कॉन्फ़िगर करें अनुभाग के अंतर्गत, Google Analytics डेटा भेजने को सक्षम करने के लिए स्विच पर क्लिक करें और BigQuery से लिंक का चयन करें।

अब आपने अपने फ़ायरबेस कंसोल प्रोजेक्ट को फ़ायरबेस एनालिटिक्स ईवेंट डेटा को बिग क्वेरी पर स्वचालित रूप से भेजने के लिए सक्षम कर दिया है। यह बिना किसी अन्य इंटरैक्शन के स्वचालित रूप से होता है, हालांकि, BigQuery में एनालिटिक्स डेटासेट बनाने वाला पहला निर्यात 24 घंटों तक नहीं हो सकता है। डेटासेट बनने के बाद, फायरबेस लगातार नए एनालिटिक्स इवेंट को बिग क्वेरी में इंट्राडे टेबल में निर्यात करता है, और पिछले दिनों के इवेंट को इवेंट टेबल में समूहित करता है।

अनुशंसा मॉडल के प्रशिक्षण के लिए बहुत अधिक डेटा की आवश्यकता होती है। चूँकि हमारे पास पहले से ही बड़ी मात्रा में डेटा उत्पन्न करने वाला कोई ऐप नहीं है, इसलिए अगले चरण में हम इस ट्यूटोरियल के बाकी हिस्सों में उपयोग करने के लिए BigQuery में एक नमूना डेटासेट आयात करेंगे।

7. मॉडल प्रशिक्षण डेटा प्राप्त करने के लिए BigQuery का उपयोग करें

अब जब हमने अपने फायरबेस कंसोल को BigQuery पर निर्यात करने के लिए कनेक्ट कर लिया है, तो हमारा ऐप एनालिटिक्स इवेंट डेटा कुछ समय बाद स्वचालित रूप से BigQuery कंसोल में दिखाई देगा। इस ट्यूटोरियल के उद्देश्यों के लिए कुछ प्रारंभिक डेटा प्राप्त करने के लिए, इस चरण में हम अपने अनुशंसा मॉडल को प्रशिक्षित करने के लिए उपयोग करने के लिए आपके BigQuery कंसोल में एक मौजूदा नमूना डेटासेट आयात करेंगे।

BigQuery में नमूना डेटासेट आयात करें

  1. Google क्लाउड कंसोल में BigQuery डैशबोर्ड पर जाएं।
  2. मेनू में अपना प्रोजेक्ट नाम चुनें.
  3. विवरण देखने के लिए BigQuery के बाएं नेविगेशन के नीचे अपने प्रोजेक्ट का नाम चुनें।
  4. डेटासेट निर्माण पैनल खोलने के लिए डेटासेट बनाएं चुनें।
  5. डेटासेट आईडी के लिए 'firebase_recommendations_dataset' दर्ज करें और डेटासेट बनाएं चुनें।
  6. नया डेटासेट प्रोजेक्ट नाम के नीचे बाएँ मेनू में दिखाई देगा। इसे क्लिक करें।
  7. तालिका निर्माण पैनल खोलने के लिए तालिका बनाएँ का चयन करें।
  8. तालिका बनाने के लिए 'Google क्लाउड स्टोरेज' चुनें।
  9. GCS बकेट फ़ील्ड से फ़ाइल चुनें में, 'gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt' दर्ज करें।
  10. फ़ाइल स्वरूप ड्रॉप डाउन में 'JSONL' चुनें।
  11. तालिका नाम के लिए 'सिफारिशें_तालिका' दर्ज करें।
  12. स्कीमा > ऑटो डिटेक्ट > स्कीमा और इनपुट पैरामीटर के अंतर्गत बॉक्स को चेक करें
  13. तालिका बनाएं चुनें

नमूना डेटासेट का अन्वेषण करें

इस बिंदु पर, आप वैकल्पिक रूप से स्कीमा का पता लगा सकते हैं और इस डेटासेट का पूर्वावलोकन कर सकते हैं।

  1. इसमें मौजूद तालिकाओं का विस्तार करने के लिए बाएं मेनू में फायरबेस-सिफारिशें-डेटासेट का चयन करें।
  2. तालिका स्कीमा देखने के लिए अनुशंसा-तालिका तालिका का चयन करें।
  3. इस तालिका में शामिल वास्तविक एनालिटिक्स इवेंट डेटा देखने के लिए पूर्वावलोकन का चयन करें।

सेवा खाता क्रेडेंशियल बनाएं

अब, हम अपने Google क्लाउड कंसोल प्रोजेक्ट में सेवा खाता क्रेडेंशियल बनाएंगे, जिसका उपयोग हम अपने BigQuery डेटा तक पहुंचने और लोड करने के लिए निम्नलिखित चरण में कोलाब वातावरण में कर सकते हैं।

  1. सुनिश्चित करें कि आपके Google क्लाउड प्रोजेक्ट के लिए बिलिंग सक्षम है।
  2. BigQuery और BigQuery स्टोरेज API API सक्षम करें। < यहां क्लिक करें >
  3. सेवा खाता कुंजी बनाएं पृष्ठ पर जाएं.
  4. सेवा खाता सूची से, नया सेवा खाता चुनें।
  5. सेवा खाता नाम फ़ील्ड में, एक नाम दर्ज करें.
  6. भूमिका सूची से, प्रोजेक्ट > स्वामी चुनें।
  7. बनाएं पर क्लिक करें. एक JSON फ़ाइल जिसमें आपकी कुंजी आपके कंप्यूटर पर डाउनलोड होती है।

अगले चरण में, हम इस डेटा को प्रीप्रोसेस करने और अपने अनुशंसा मॉडल को प्रशिक्षित करने के लिए Google Colab का उपयोग करेंगे।

8. प्रीप्रोसेस डेटा और ट्रेन अनुशंसा मॉडल

इस चरण में, हम निम्नलिखित चरणों को निष्पादित करने के लिए कोलाब नोटबुक का उपयोग करेंगे:

  1. BigQuery डेटा को Colab नोटबुक में आयात करें
  2. मॉडल प्रशिक्षण के लिए इसे तैयार करने के लिए डेटा को प्रीप्रोसेस करें
  3. एनालिटिक्स डेटा पर अनुशंसा मॉडल को प्रशिक्षित करें
  4. मॉडल को टीएफ लाइट मॉडल के रूप में निर्यात करें
  5. मॉडल को फायरबेस कंसोल पर तैनात करें ताकि हम इसे अपने ऐप में उपयोग कर सकें

कोलाब प्रशिक्षण नोटबुक लॉन्च करने से पहले, हम पहले फायरबेस मॉडल प्रबंधन एपीआई को सक्षम करेंगे ताकि कोलाब प्रशिक्षित मॉडल को हमारे फायरबेस कंसोल पर तैनात कर सके।

फायरबेस मॉडल प्रबंधन एपीआई सक्षम करें

अपने एमएल मॉडलों को संग्रहीत करने के लिए एक बकेट बनाएं

अपने फायरबेस कंसोल में, स्टोरेज पर जाएं और आरंभ करें पर क्लिक करें। fbbea78f0eb3dc9f.png

अपनी बाल्टी सेट अप करने के लिए संवाद का पालन करें।

19517c0d6d2aa14d.png

फायरबेस एमएल एपीआई सक्षम करें

Google क्लाउड कंसोल पर फायरबेस एमएल एपीआई पेज पर जाएं और सक्षम करें पर क्लिक करें।

मॉडल को प्रशिक्षित और तैनात करने के लिए कोलाब नोटबुक का उपयोग करें

निम्नलिखित लिंक का उपयोग करके कोलाब नोटबुक खोलें और अंदर दिए गए चरणों को पूरा करें। कोलाब नोटबुक में चरणों को पूरा करने के बाद, आपके पास फायरबेस कंसोल पर तैनात एक टीएफ लाइट मॉडल फ़ाइल होगी जिसे हम अपने ऐप में सिंक कर सकते हैं।

कोलाब में खोलें

9. अपने ऐप में मॉडल डाउनलोड करें

इस चरण में, हम उस मॉडल को डाउनलोड करने के लिए अपने ऐप को संशोधित करेंगे जिसे हमने अभी फायरबेस मशीन लर्निंग से प्रशिक्षित किया है।

फायरबेस एमएल निर्भरता जोड़ें

आपके ऐप में फायरबेस मशीन लर्निंग मॉडल का उपयोग करने के लिए निम्नलिखित निर्भरता की आवश्यकता है। इसे पहले ही जोड़ा जाना चाहिए (सत्यापित करें)।

पॉडफ़ाइल

import FirebaseCore
import FirebaseMLModelDownloader

फायरबेस मॉडल मैनेजर एपीआई के साथ मॉडल डाउनलोड करें

जिन शर्तों के तहत मॉडल डाउनलोड होता है, उन्हें सेट करने के लिए नीचे दिए गए कोड को मॉडललोडर.स्विफ्ट में कॉपी करें और रिमोट मॉडल को हमारे ऐप में सिंक करने के लिए एक डाउनलोड कार्य बनाएं।

मॉडललोडर.स्विफ्ट

static func downloadModel(named name: String,
                            completion: @escaping (CustomModel?, DownloadError?) -> Void) {
    guard FirebaseApp.app() != nil else {
      completion(nil, .firebaseNotInitialized)
      return
    }
    guard success == nil && failure == nil else {
      completion(nil, .downloadInProgress)
      return
    }
    let conditions = ModelDownloadConditions(allowsCellularAccess: false)
    ModelDownloader.modelDownloader().getModel(name: name, downloadType: .localModelUpdateInBackground, conditions: conditions) { result in
            switch (result) {
            case .success(let customModel):
                    // Download complete.
                    // The CustomModel object contains the local path of the model file,
                    // which you can use to instantiate a TensorFlow Lite classifier.
                    return completion(customModel, nil)
            case .failure(let error):
                // Download was unsuccessful. Notify error message.
              completion(nil, .downloadFailed(underlyingError: error))
            }
    }
  }

10. अपने ऐप में Tensorflow Lite अनुशंसा मॉडल को एकीकृत करें

Tensorflow Lite रनटाइम आपको अनुशंसाएँ उत्पन्न करने के लिए ऐप में अपने मॉडल का उपयोग करने देगा। पिछले चरण में हमने डाउनलोड की गई मॉडल फ़ाइल के साथ एक TFlite दुभाषिया प्रारंभ किया था। इस चरण में, हम पहले अपने मॉडल के साथ अनुमान चरण में एक शब्दकोश और लेबल लोड करेंगे, फिर हम अपने मॉडल और पोस्ट-प्रोसेसिंग में इनपुट उत्पन्न करने के लिए प्री-प्रोसेसिंग जोड़ेंगे जहां हम अपने अनुमान से परिणाम निकालेंगे। .

शब्दकोश और लेबल लोड करें

अनुशंसा मॉडल द्वारा अनुशंसा उम्मीदवारों को उत्पन्न करने के लिए उपयोग किए जाने वाले लेबल संपत्ति फ़ोल्डर में sorted_movie_vocab.json फ़ाइल में सूचीबद्ध हैं। इन उम्मीदवारों को लोड करने के लिए निम्नलिखित कोड को कॉपी करें।

सिफ़ारिशेंViewController.swift

  func getMovies() -> [MovieItem] {
    let barController = self.tabBarController as! TabBarController
    return barController.movies
  }

प्री-प्रोसेसिंग लागू करें

प्री-प्रोसेसिंग चरण में, हम अपने मॉडल की अपेक्षा से मेल खाने के लिए इनपुट डेटा का रूप बदलते हैं। यहां, यदि हमने पहले से ही बहुत सारे उपयोगकर्ता लाइक उत्पन्न नहीं किए हैं, तो हम प्लेसहोल्डर मान के साथ इनपुट लंबाई को पैड करते हैं। नीचे दिए गए कोड को कॉपी करें:

सिफ़ारिशेंViewController.swift

  // Given a list of selected items, preprocess to get tflite input.
  func preProcess() -> Data {
    let likedMovies = getLikedMovies().map { (MovieItem) -> Int32 in
      return MovieItem.id
    }
    var inputData = Data(copyingBufferOf: Array(likedMovies.prefix(10)))

    // Pad input data to have a minimum of 10 context items (4 bytes each)
    while inputData.count < 10*4 {
      inputData.append(0)
    }
    return inputData
  }

अनुशंसाएँ उत्पन्न करने के लिए दुभाषिया चलाएँ

यहां हम अपने पूर्व-संसाधित इनपुट पर अनुमान चलाने के लिए पिछले चरण में डाउनलोड किए गए मॉडल का उपयोग करते हैं। हम अपने मॉडल के लिए इनपुट और आउटपुट का प्रकार निर्धारित करते हैं और अपनी मूवी अनुशंसाएँ उत्पन्न करने के लिए अनुमान चलाते हैं। निम्नलिखित कोड को अपने ऐप में कॉपी करें।

सिफ़ारिशेंViewController.swift

import TensorFlowLite

सिफ़ारिशेंViewController.swift

 private var interpreter: Interpreter?

 func loadModel() {
    // Download the model from Firebase
    print("Fetching recommendations model...")
    ModelDownloader.fetchModel(named: "recommendations") { (filePath, error) in
      guard let path = filePath else {
        if let error = error {
          print(error)
        }
        return
      }
      print("Recommendations model download complete")
      self.loadInterpreter(path: path)
    }
  }

 func loadInterpreter(path: String) {
    do {
      interpreter = try Interpreter(modelPath: path)

      // Allocate memory for the model's input `Tensor`s.
      try interpreter?.allocateTensors()

      let inputData = preProcess()

      // Copy the input data to the input `Tensor`.
      try self.interpreter?.copy(inputData, toInputAt: 0)

      // Run inference by invoking the `Interpreter`.
      try self.interpreter?.invoke()

      // Get the output `Tensor`
      let confidenceOutputTensor = try self.interpreter?.output(at: 0)
      let idOutputTensor = try self.interpreter?.output(at: 1)

      // Copy output to `Data` to process the inference results.
      let confidenceOutputSize = confidenceOutputTensor?.shape.dimensions.reduce(1, {x, y in x * y})

      let idOutputSize = idOutputTensor?.shape.dimensions.reduce(1, {x, y in x * y})

      let confidenceResults =
        UnsafeMutableBufferPointer<Float32>.allocate(capacity: confidenceOutputSize!)
      let idResults =
        UnsafeMutableBufferPointer<Int32>.allocate(capacity: idOutputSize!)
      _ = confidenceOutputTensor?.data.copyBytes(to: confidenceResults)
      _ = idOutputTensor?.data.copyBytes(to: idResults)

      postProcess(idResults, confidenceResults)

      print("Successfully ran inference")
      DispatchQueue.main.async {
        self.tableView.reloadData()
      }
    } catch {
      print("Error occurred creating model interpreter: \(error)")
    }
  }

पोस्ट-प्रोसेसिंग लागू करें

अंत में, इस चरण में हम अपने मॉडल से आउटपुट को पोस्ट-प्रोसेस करते हैं, उच्चतम आत्मविश्वास के साथ परिणामों का चयन करते हैं और निहित मूल्यों को हटाते हैं (ऐसी फिल्में जिन्हें उपयोगकर्ता पहले ही पसंद कर चुका है)। निम्नलिखित कोड को अपने ऐप में कॉपी करें।

सिफ़ारिशेंViewController.swift

  // Postprocess to get results from tflite inference.
  func postProcess(_ idResults: UnsafeMutableBufferPointer<Int32>, _ confidenceResults: UnsafeMutableBufferPointer<Float32>) {
    for i in 0..<10 {
      let id = idResults[i]
      let movieIdx = getMovies().firstIndex { $0.id == id }
      let title = getMovies()[movieIdx!].title
      recommendations.append(Recommendation(title: title, confidence: confidenceResults[i]))
    }
  }

अपने ऐप का परीक्षण करें!

अपना ऐप पुनः चलाएँ. जैसे ही आप कुछ फिल्में चुनते हैं, इसे स्वचालित रूप से नया मॉडल डाउनलोड करना चाहिए और सिफारिशें उत्पन्न करना शुरू कर देना चाहिए!

11. बधाई हो!

आपने TensorFlow Lite और Firebase का उपयोग करके अपने ऐप में एक अनुशंसा सुविधा बनाई है। ध्यान दें कि इस कोडलैब में दिखाई गई तकनीकों और पाइपलाइन को सामान्यीकृत किया जा सकता है और अन्य प्रकार की अनुशंसाओं को पूरा करने के लिए भी उपयोग किया जा सकता है।

हमने क्या कवर किया है

  • फायरबेस एमएल
  • फायरबेस एनालिटिक्स
  • बिगक्वेरी में एनालिटिक्स इवेंट निर्यात करें
  • प्रीप्रोसेस एनालिटिक्स इवेंट
  • ट्रेन अनुशंसाएँ TensorFlow मॉडल
  • मॉडल निर्यात करें और फायरबेस कंसोल पर तैनात करें
  • किसी ऐप में मूवी अनुशंसाएँ प्रस्तुत करें

अगले कदम

  • अपने ऐप में फायरबेस एमएल अनुशंसाएं लागू करें।

और अधिक जानें

एक सवाल है?

मुद्दों की रिपोर्ट करें