TensorFlow Lite और Firebase की मदद से, अपने ऐप्लिकेशन में सुझाव जोड़ना - iOS कोडलैब (कोड बनाना सीखना)

1. खास जानकारी

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

सुझावों की मदद से, ऐप्लिकेशन को मशीन लर्निंग का इस्तेमाल करके, हर उपयोगकर्ता के लिए सबसे काम का कॉन्टेंट दिखाने में मदद मिलती है. वे अन्य उपयोगकर्ताओं के एग्रीगेट व्यवहार के बारे में तैयार किए गए मॉडल का इस्तेमाल करके, उपयोगकर्ता के पिछले व्यवहार को ध्यान में रखते हैं, ताकि यह सुझाव दिया जा सके कि उपयोगकर्ता आने वाले समय में ऐप्लिकेशन का कॉन्टेंट इस्तेमाल कर सकते हैं या नहीं.

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

आपको यह जानकारी मिलेगी

  • उपयोगकर्ता के व्यवहार का डेटा इकट्ठा करने के लिए, Firebase Analytics को Android ऐप्लिकेशन के साथ इंटिग्रेट करें
  • उस डेटा को Google Big Query में एक्सपोर्ट करना
  • डेटा को पहले से प्रोसेस करना और TF Lite के सुझावों के मॉडल को ट्रेनिंग देना
  • Firebase ML में TF Lite मॉडल को डिप्लॉय करें और इसे अपने ऐप्लिकेशन से ऐक्सेस करें
  • उपयोगकर्ताओं को सुझाव देने के लिए, मॉडल का इस्तेमाल करके डिवाइस के अनुमान पर चलाएं

आपको इन चीज़ों की ज़रूरत होगी

  • Xcode 11 (या उसके बाद का वर्शन)
  • CocoaPods 1.9.1 (या उसके बाद के वर्शन)

इस ट्यूटोरियल का इस्तेमाल कैसे किया जाएगा?

इसे सिर्फ़ पढ़ें इसे पढ़ें और कसरतों को पूरा करें

iOS ऐप्लिकेशन बनाने के आपके अनुभव को क्या रेटिंग मिलेगी?

शुरुआती इंटरमीडिएट कुशल

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

प्रोजेक्ट में Firebase जोड़ना

  1. Firebase कंसोल पर जाएं.
  2. नया प्रोजेक्ट बनाएं चुनें और अपने प्रोजेक्ट का नाम "Firebase ML iOS कोडलैब" रखें.

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 में चलाएं और सुझावों को ध्यान में रखकर काम करें.

Firebase सेट अप करना

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

4a923d5c7ae0d8f3.png

Firebase को अपनी Podfile में जोड़ें और pod इंस्टॉल करें.

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

अपने AppDelegate के didFinishLaunchingWithOptions वाले तरीके में, फ़ाइल के सबसे ऊपर Firebase को इंपोर्ट करें

import FirebaseCore

और Firebase कॉन्फ़िगर करने के लिए कोई कॉल जोड़ें.

FirebaseApp.configure()

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

  1. पक्का करें कि "इस प्रोजेक्ट के लिए Google Analytics चालू करें" चालू है.
  2. Firebase कंसोल में, सेटअप करने के बाकी चरण पूरे करें. इसके बाद, प्रोजेक्ट बनाएं पर क्लिक करें. अगर Google के किसी मौजूदा प्रोजेक्ट का इस्तेमाल किया जा रहा है, तो Firebase जोड़ें पर क्लिक करें.

4. ऐप्लिकेशन में Firebase Analytics जोड़ना

इस चरण में, उपयोगकर्ता व्यवहार डेटा (इस मामले में, उपयोगकर्ता को कौन सी फ़िल्में पसंद है) लॉग करने के लिए ऐप्लिकेशन में Firebase Analytics जोड़ें. इस डेटा का इस्तेमाल, आने वाले चरणों में एक साथ किया जाएगा, ताकि सुझावों के मॉडल को ट्रेनिंग दी जा सके.

ऐप्लिकेशन में Firebase Analytics सेट अप करना

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

जब उपयोगकर्ता किसी फ़िल्म पर क्लिक करे, तो Analytics इवेंट रजिस्टर करने के लिए, नीचे दिया गया कोड जोड़ें.

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. Analytics इंटिग्रेशन की जांच करना

इस चरण में, हम ऐप्लिकेशन में Analytics इवेंट जनरेट करेंगे और पुष्टि करेंगे कि उन्हें Firebase कंसोल पर भेजा जा रहा है.

Analytics डीबग लॉगिंग चालू करें

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

अपने डेवलपमेंट डिवाइस पर Analytics डीबग मोड चालू करने के लिए, Xcode में यह कमांड लाइन आर्ग्युमेंट डालें:

-FIRDebugEnabled

अब आपने अपने ऐप्लिकेशन में Firebase Analytics को सफलतापूर्वक इंटीग्रेट कर लिया है. जब लोग आपके ऐप्लिकेशन का इस्तेमाल करते हैं और फ़िल्में पसंद करते हैं, तब उनकी पसंद की जानकारी एग्रीगेट के तौर पर लॉग की जाएगी. हम इस इकट्ठा किए गए डेटा का इस्तेमाल, कोडलैब के बाकी हिस्सों में अपने सुझाव मॉडल को ट्रेनिंग देने के लिए करेंगे. यह चरण वैकल्पिक है. इसकी मदद से, Logcat में दिखने वाले Analytics इवेंट को, Firebase कंसोल में भी देखा जा सकता है. अगले पेज पर जाएं.

ज़रूरी नहीं: Firebase कंसोल में Analytics इवेंट की पुष्टि करना

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

6. Analytics डेटा को Big Query में एक्सपोर्ट करें

Big Query, Google Cloud का एक प्रॉडक्ट है. इसकी मदद से, बड़ी मात्रा में डेटा की जांच और उसे प्रोसेस किया जा सकता है. इस चरण में, आप अपने Firebase कंसोल प्रोजेक्ट को Big Query से कनेक्ट करेंगे, ताकि आपके ऐप्लिकेशन से जनरेट हुआ Analytics डेटा अपने-आप Big Query में एक्सपोर्ट हो जाए.

Big Query एक्सपोर्ट चालू करें

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

अब आपने अपने Firebase कंसोल प्रोजेक्ट को चालू कर लिया है, ताकि Firebase Analytics इवेंट डेटा को Big Query पर अपने-आप भेजा जा सके. यह प्रोसेस अपने-आप होती है, लेकिन इसके लिए आपको कोई अन्य इंटरैक्शन नहीं करना पड़ता. हालांकि, ऐसा हो सकता है कि BigQuery में पहली बार Analytics का डेटासेट बनाने वाला एक्सपोर्ट 24 घंटे तक ही चालू रहे. डेटासेट बनाने के बाद, Firebase इंट्रा-डे टेबल में BigQuery में Analytics के नए इवेंट लगातार एक्सपोर्ट करता है. साथ ही, पिछले दिनों के इवेंट को इवेंट टेबल में ग्रुप करता है.

सुझावों के मॉडल को ट्रेनिंग देने के लिए, बहुत ज़्यादा डेटा की ज़रूरत होती है. हमारे पास पहले से ज़्यादा डेटा जनरेट करने वाला ऐप्लिकेशन नहीं है, इसलिए अगले चरण में हम BigQuery में एक सैंपल डेटासेट इंपोर्ट करेंगे, ताकि इसका इस्तेमाल बाकी ट्यूटोरियल में किया जा सके.

7. मॉडल ट्रेनिंग डेटा पाने के लिए BigQuery का इस्तेमाल करना

अब हमने BigQuery में एक्सपोर्ट करने के लिए, Firebase कंसोल कनेक्ट कर दिया है. इसलिए, अब ऐप्लिकेशन के आंकड़ों का इवेंट डेटा, कुछ समय बाद अपने-आप BigQuery कंसोल में दिखने लगेगा. इस ट्यूटोरियल के मकसद से कुछ शुरुआती डेटा पाने के लिए, इस चरण में हम आपके BigQuery कंसोल में मौजूदा सैंपल डेटासेट इंपोर्ट करेंगे. इसका इस्तेमाल करके, हम आपके सुझाव वाले मॉडल को ट्रेनिंग देंगे.

BigQuery में सैंपल डेटासेट इंपोर्ट करें

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

सैंपल डेटासेट एक्सप्लोर करें

इस समय, वैकल्पिक तौर पर स्कीमा को एक्सप्लोर किया जा सकता है और इस डेटासेट की झलक देखी जा सकती है.

  1. इसमें शामिल टेबल को बड़ा करने के लिए, बाईं ओर मौजूद मेन्यू में firebase-recommendations-dataset को चुनें.
  2. टेबल स्कीमा देखने के लिए सुझावों की टेबल चुनें.
  3. इस टेबल में मौजूद Analytics इवेंट का असल डेटा देखने के लिए, झलक देखें चुनें.

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

अब हम अपने Google Cloud Console प्रोजेक्ट में, सेवा खाते के क्रेडेंशियल बनाएंगे. इन्हें हम अगले चरण में Colab की मदद से इस्तेमाल करके, अपने BigQuery डेटा को ऐक्सेस और लोड करेंगे.

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

अगले चरण में, हम इस डेटा को पहले से प्रोसेस करने और सुझावों के मॉडल को ट्रेनिंग देने के लिए, Google Colab का इस्तेमाल करेंगे.

8. डेटा और ट्रेन के सुझावों का मॉडल पहले से प्रोसेस करना

इस चरण में, हम यह तरीका अपनाने के लिए Colab notebook का इस्तेमाल करेंगे:

  1. BigQuery डेटा को Colab notebook में इंपोर्ट करें
  2. डेटा को मॉडल ट्रेनिंग के लिए तैयार करने के लिए, उसे पहले से प्रोसेस कर सकता है
  3. Analytics डेटा के आधार पर, सुझाव मॉडल को ट्रेनिंग देना
  4. इस मॉडल को TF lite मॉडल के तौर पर एक्सपोर्ट करना
  5. मॉडल को Firebase कंसोल में डिप्लॉय करें, ताकि हम इसे अपने ऐप्लिकेशन में इस्तेमाल कर सकें

Colab ट्रेनिंग notebook को लॉन्च करने से पहले, हम Firebase मॉडल मैनेजमेंट एपीआई को चालू करेंगे. इससे Colab, ट्रेन किए गए मॉडल को हमारे Firebase कंसोल पर डिप्लॉय कर सकेगा.

Firebase मॉडल मैनेजमेंट एपीआई चालू करें

अपने एमएल मॉडल स्टोर करने के लिए बकेट बनाना

अपने Firebase कंसोल में, स्टोरेज पर जाएं और 'शुरू करें' पर क्लिक करें. fbbea78f0eb3dc9f.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

अपनी बकेट सेट अप करने के लिए, डायलॉग बोलें.

19517c0d6d2aa14d.png

Firebase ML API चालू करना

Google Cloud Console में, Firebase ML API पेज पर जाएं और 'चालू करें' पर क्लिक करें.

मॉडल को ट्रेनिंग देने और डिप्लॉय करने के लिए, Colab notebook का इस्तेमाल करें

नीचे दिए गए लिंक का इस्तेमाल करके, कोलैब नोटबुक खोलें और इसमें दिए गए चरणों को पूरा करें. Colab notebook के चरणों को पूरा करने के बाद, आपके पास Firebase कंसोल पर TF lite मॉडल की फ़ाइल होगी, जिसे हम अपने ऐप्लिकेशन से सिंक कर सकते हैं.

Colab में खोलें

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

इस चरण में, हम अपने ऐप्लिकेशन में बदलाव करेंगे, ताकि हम उस मॉडल को डाउनलोड कर सकें जिसे हमने Firebase मशीन लर्निंग से ट्रेनिंग दी है.

Firebase ML डिपेंडेंसी जोड़ें

अपने ऐप्लिकेशन में Firebase मशीन लर्निंग मॉडल का इस्तेमाल करने के लिए, इन डिपेंडेंसी की ज़रूरत होती है. इसे पहले से ही जोड़ा जाना चाहिए (पुष्टि करें).

पॉडफ़ाइल

import FirebaseCore
import FirebaseMLModelDownloader

Firebase मॉडल मैनेजर एपीआई की मदद से मॉडल डाउनलोड करना

मॉडल डाउनलोड होने की स्थितियां सेट करने के लिए, नीचे दिए गए कोड को ModelLoader.swift में कॉपी करें. साथ ही, रिमोट मॉडल को हमारे ऐप्लिकेशन के साथ सिंक करने के लिए, डाउनलोड टास्क बनाएं.

ModelLoader.swift

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_vo करेंगे.json फ़ाइल में मौजूद हैं. इन उम्मीदवारों को लोड करने के लिए निम्न कोड की कॉपी करें.

सुझाए गए व्यूकंट्रोलर.swift

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

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

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

सुझाए गए व्यूकंट्रोलर.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
  }

सुझाव जनरेट करने के लिए अनुवादक मोड का इस्तेमाल करें

यहां हम अपने पहले से प्रोसेस किए गए इनपुट पर अनुमान चलाने के लिए, पिछले चरण में डाउनलोड किए गए मॉडल का इस्तेमाल करते हैं. हम अपने मॉडल के लिए इनपुट और आउटपुट का टाइप सेट करते हैं और अनुमान का इस्तेमाल करके, फ़िल्मों के सुझाव जनरेट करते हैं. इस कोड को अपने ऐप्लिकेशन में कॉपी करें.

सुझाए गए व्यूकंट्रोलर.swift

import TensorFlowLite

सुझाए गए व्यूकंट्रोलर.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)")
    }
  }

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

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

सुझाए गए व्यूकंट्रोलर.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 का इस्तेमाल करके, अपने ऐप्लिकेशन में सुझाव देने वाली सुविधा बनाई है. ध्यान दें कि इस कोडलैब में दिखाई गई तकनीकों और पाइपलाइन को सामान्य बनाया जा सकता है. इनका इस्तेमाल दूसरी तरह के सुझाव देने के लिए भी किया जा सकता है.

हमने इन विषयों के बारे में बताया

  • Firebase ML
  • Firebase Analytics
  • आंकड़ों वाले इवेंट को BigQuery में एक्सपोर्ट करना
  • आंकड़ों के इवेंट को पहले ही प्रोसेस करना
  • ट्रेन से जुड़े सुझाव TensorFlow मॉडल
  • मॉडल एक्सपोर्ट करें और Firebase कंसोल में डिप्लॉय करें
  • ऐप्लिकेशन में फ़िल्मों के सुझाव देना

अगले चरण

  • अपने ऐप्लिकेशन में Firebase एमएल के सुझाव लागू करें.

ज़्यादा जानें

क्या आपका कोई सवाल है?

समस्याओं की शिकायत करना