הוספת המלצות לאפליקציה בעזרת TensorFlow Lite ו-Firebase – Android Codelab

1. סקירה כללית

ברוכים הבאים לשיעור Codelab בנושא המלצות עם TensorFlow Lite ו-Firebase. ב-Codelab הזה נסביר איך להשתמש ב-TensorFlow Lite וב-Firebase כדי לפרוס מודל המלצות באפליקציה. ה-Codelab הזה מבוסס על הדוגמה הזו של TensorFlow Lite.

ההמלצות מאפשרות לאפליקציות להשתמש בלמידת מכונה כדי להציג בצורה חכמה את התוכן הרלוונטי ביותר לכל משתמש. הם מתבססים על התנהגות משתמשים בעבר כדי להציע תוכן באפליקציה שהמשתמש עשוי לרצות ליצור איתו אינטראקציה בעתיד. ההצעות האלה מבוססות על מודל שאומן על סמך התנהגות מצטברת של מספר גדול של משתמשים אחרים.

במדריך הזה נסביר איך להשיג נתונים מהמשתמשים באפליקציה באמצעות Firebase Analytics, ליצור מודל של למידת מכונה להמלצות על סמך הנתונים האלה, ואז להשתמש במודל הזה באפליקציית Android כדי להריץ הסקה ולקבל המלצות. בפרט, ההמלצות שלנו יציעו למשתמשים סרטים שהם כנראה ירצו לצפות בהם, בהתבסס על רשימת הסרטים שהם סימנו בלייק בעבר.

מה תלמדו

  • שילוב של Firebase Analytics באפליקציית Android כדי לאסוף נתוני התנהגות משתמשים
  • ייצוא הנתונים ל-Google BigQuery
  • ביצוע עיבוד מקדים של הנתונים ואימון של מודל המלצות של TF Lite
  • פריסת מודל TF Lite ב-Firebase ML וגישה אליו מהאפליקציה
  • הפעלת הסקת מסקנות במכשיר באמצעות המודל כדי להציע המלצות למשתמשים

מה תצטרכו

  • הגרסה העדכנית של Android Studio.
  • קוד לדוגמה.
  • מכשיר בדיקה עם Android מגרסה 7 ומעלה ו-Google Play Services מגרסה 9.8 ומעלה, או אמולטור עם Google Play Services מגרסה 9.8 ומעלה
  • אם משתמשים במכשיר, צריך כבל חיבור.

איך תשתמשו במדריך הזה?

רק לקרוא לקרוא ולבצע את התרגילים

איך היית מדרג את חוויית הפיתוח שלך באפליקציות ל-Android?

מתחילים ביניים מומחים

2. קבלת קוד לדוגמה

משכפלים את מאגר GitHub משורת הפקודה.

$ git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-android.git

3. ייבוא של אפליקציה לתחילת הדרך

ב-Android Studio, בוחרים את הספרייה codelab-recommendations-android ( android_studio_folder.png) מתוך ההורדה של קוד לדוגמה (File (קובץ) > Open (פתיחה) > …/codelab-recommendations-android/start).

עכשיו פרויקט ההתחלה אמור להיפתח ב-Android Studio.

4. יצירת פרויקט במסוף Firebase

יצירת פרויקט חדש

  1. עוברים אל מסוף Firebase.
  2. לוחצים על הוספת פרויקט (או על יצירת פרויקט אם זה הפרויקט הראשון).
  3. בוחרים או מזינים שם לפרויקט ולוחצים על המשך.
  4. מוודאים שהאפשרות 'הפעלת Google Analytics בפרויקט הזה' מופעלת.
  5. ממשיכים לבצע את שאר שלבי ההגדרה במסוף Firebase, ואז לוחצים על Create project (יצירת פרויקט) או על Add Firebase (הוספת Firebase) אם משתמשים בפרויקט קיים ב-Google.

5. הוסף את Firebase

  1. במסך הסקירה הכללית של הפרויקט החדש, לוחצים על סמל Android כדי להפעיל את תהליך ההגדרה.
  2. מזינים את שם החבילה של ה-codelab: com.google.firebase.codelabs.recommendations
  3. בוחרים באפשרות רישום האפליקציה.

הוספת קובץ google-services.json לאפליקציה

אחרי שמוסיפים את שם החבילה ובוחרים באפשרות 'הרשמה', לוחצים על הורדה של google-services.json כדי לקבל את קובץ ההגדרות של Firebase Android, ואז מעתיקים את הקובץ google-services.json לספרייה app בפרויקט. אחרי שהקובץ יורד, אפשר לדלג על השלבים הבאים שמוצגים במסוף (הם כבר בוצעו בשבילכם בפרויקט build-android-start).

הוספת הפלאגין google-services לאפליקציה

הפלאגין google-services משתמש בקובץ google-services.json כדי להגדיר את האפליקציה לשימוש ב-Firebase. השורות הבאות כבר אמורות להיות מוספות לקבצים build.gradle.kts בפרויקט (כדאי לבדוק כדי לוודא):

app/build.grade.kts

plugins {
    id("com.google.gms.google-services")
}

build.grade.kts

plugins {
    id("com.google.gms.google-services") version "4.3.15" apply false
}

סנכרון הפרויקט עם קובצי gradle

כדי לוודא שכל התלויות זמינות לאפליקציה, בשלב הזה צריך לסנכרן את הפרויקט עם קובצי ה-Gradle. בסרגל הכלים של Android Studio, בוחרים באפשרות File > Sync Project with Gradle Files (קובץ > סנכרון הפרויקט עם קובצי Gradle).

6. הפעלת האפליקציה לתחילת הדרך

אחרי שמייבאים את הפרויקט ל-Android Studio ומגדירים את התוסף google-services באמצעות קובץ ה-JSON, אפשר להריץ את האפליקציה בפעם הראשונה. מחברים את מכשיר Android ולוחצים על Run (הפעלה) ( execute.png) בסרגל הכלים של Android Studio.

האפליקציה אמורה להיפתח במכשיר. בשלב הזה, אפשר לראות אפליקציה פועלת שכוללת כרטיסייה עם רשימה של סרטים, כרטיסייה עם סרטים שאהבתם וכרטיסייה עם המלצות. כדי להוסיף סרט לרשימת הסרטים שאהבתם, לוחצים על הסרט ברשימת הסרטים. אחרי שנשלים את שאר השלבים של ה-codelab, נוכל ליצור המלצות לסרטים בכרטיסייה 'המלצות'.

7. הוספת Firebase Analytics לאפליקציה

בשלב הזה מוסיפים את Firebase Analytics לאפליקציה כדי לתעד נתוני התנהגות משתמשים (במקרה הזה, אילו סרטים משתמש אהב). הנתונים האלה ישמשו באופן מצטבר בשלבים הבאים לאימון מודל ההמלצות.

הוספה של מפרט חומרים (BoM) של 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 עם הקוד שלמטה כדי לרשום אירוע 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) {

    ...

    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

  1. ב-Android Studio, פותחים את החלון Logcat כדי לבדוק את הרישום ביומן מהאפליקציה.
  2. מגדירים את המסנן Logcat למחרוזת Logging event (רישום אירוע ביומן).
  3. מוודאים שאירועי Analytics מסוג select_item מופעלים בכל פעם שמסמנים סרט באפליקציה בתור 'אהבתי'.

בשלב הזה, שילבתם בהצלחה את Firebase Analytics באפליקציה. כשהמשתמשים משתמשים באפליקציה ומסמנים סרטים שהם אוהבים, הסימונים שלהם מתועדים במצטבר. נשתמש בנתונים המצטברים האלה בהמשך ה-codelab הזה כדי לאמן את מודל ההמלצות שלנו. השלב הבא הוא אופציונלי, והוא מאפשר לכם לראות את אותם אירועים של Analytics שראיתם ב-Logcat גם בסטרימינג במסוף Firebase. אפשר לדלג לדף הבא.

אופציונלי: אישור אירועים של Analytics במסוף Firebase

  1. עוברים אל מסוף Firebase.
  2. בוחרים באפשרות DebugView בקטע Analytics.
  3. ב-Android Studio, בוחרים באפשרות הפעלה כדי להפעיל את האפליקציה ולהוסיף כמה סרטים לרשימת הסרטים שאהבתם.
  4. ב-DebugView במסוף Firebase, מוודאים שהאירועים האלה נרשמים בזמן שמוסיפים סרטים באפליקציה.

9. ייצוא נתונים מ-Analytics ל-BigQuery

‫Big Query הוא מוצר של Google Cloud שמאפשר לבדוק ולעבד כמויות גדולות של נתונים. בשלב הזה, מקשרים את הפרויקט במסוף Firebase ל-BigQuery כדי שנתוני Analytics שנוצרו על ידי האפליקציה ייוצאו באופן אוטומטי ל-BigQuery.

הפעלת BigQuery Export

  1. עוברים אל מסוף Firebase.
  2. לוחצים על סמל גלגל השיניים של ההגדרות לצד Project Overview (סקירת הפרויקט) ואז בוחרים באפשרות Project settings (הגדרות הפרויקט).
  3. לוחצים על הכרטיסייה Integrations (שילובים).
  4. בבלוק BigQuery, לוחצים על קישור (או על ניהול).
  5. בשלב מידע על קישור Firebase ל-BigQuery, לוחצים על הבא.
  6. בקטע הגדרת השילוב, לוחצים על המתג כדי להפעיל את שליחת הנתונים מ-Google Analytics ובוחרים באפשרות קישור ל-BigQuery.

הפעלתם את האפשרות לשלוח אוטומטית נתוני אירועים מ-Firebase Analytics אל BigQuery בפרויקט במסוף Firebase. התהליך הזה מתבצע באופן אוטומטי בלי צורך בפעולה נוספת, אבל יכול להיות שהייצוא הראשון שיוצר את מערך הנתונים של Analytics ב-BigQuery יתבצע רק אחרי 24 שעות. אחרי שיוצרים את מערך הנתונים, מערכת Firebase מייצאת באופן רציף אירועים חדשים מ-Analytics אל BigQuery לטבלה היומית, ומקבצת אירועים מימים קודמים בטבלת האירועים.

כדי לאמן מודל המלצות צריך הרבה נתונים. מכיוון שאין לנו אפליקציה שמייצרת כמויות גדולות של נתונים, בשלב הבא נייבא מערך נתונים לדוגמה ל-BigQuery כדי להשתמש בו בהמשך המדריך הזה.

10. שימוש ב-BigQuery כדי לקבל נתונים לאימון מודלים

אחרי שחיברנו את Firebase Console לייצוא ל-BigQuery, נתוני האירועים של ניתוח האפליקציה יופיעו אוטומטית ב-BigQuery Console אחרי זמן מה. כדי לקבל נתונים ראשוניים לצורך המדריך הזה, בשלב הזה נשתמש במערך נתונים לדוגמה שקיים כבר ונייבא אותו למסוף BigQuery כדי לאמן את מודל ההמלצות שלנו.

ייבוא מערך נתונים לדוגמה ל-BigQuery

  1. נכנסים ללוח הבקרה של BigQuery במסוף Google Cloud.
  2. בוחרים את שם הפרויקט בתפריט.
  3. כדי לראות את הפרטים, בוחרים את שם הפרויקט בחלק התחתון של סרגל הניווט הימני ב-BigQuery.
  4. בוחרים באפשרות יצירת מערך נתונים כדי לפתוח את החלונית ליצירת מערך נתונים.
  5. מזינים 'firebase_recommendations_dataset' בשדה Dataset ID ולוחצים על Create dataset (יצירת מערך נתונים).
  6. מערך הנתונים החדש יופיע בתפריט הימני מתחת לשם הפרויקט. לחץ עליו.
  7. לוחצים על יצירת טבלה כדי לפתוח את חלונית יצירת הטבלה.
  8. בקטע Create table from (יצירת טבלה מתוך), בוחרים באפשרות Google Cloud Storage.
  9. בשדה Select file from GCS bucket, מזינים את הנתיב gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt.
  10. בתפריט הנפתח פורמט קובץ, בוחרים באפשרות JSONL.
  11. מזינים 'recommendations_table' בשדה שם הטבלה.
  12. מסמנים את התיבה שמתחת לסכימה > זיהוי אוטומטי > סכימה ופרמטרים של קלט
  13. בוחרים באפשרות יצירת טבלה.

עיון במערך נתונים לדוגמה

בשלב הזה, אפשר לבדוק את הסכימה ולצפות בתצוגה מקדימה של מערך הנתונים.

  1. בתפריט הימני, בוחרים באפשרות firebase-recommendations-dataset כדי להרחיב את הטבלאות שהוא מכיל.
  2. בוחרים בטבלה recommendations-table כדי לראות את סכימת הטבלה.
  3. לוחצים על תצוגה מקדימה כדי לראות את נתוני האירועים בפועל מ-Analytics שהטבלה הזו מכילה.

יצירת פרטי כניסה לחשבון שירות

עכשיו ניצור פרטי כניסה לחשבון שירות בפרויקט שלנו במסוף Google Cloud, שבהם נוכל להשתמש בשלב הבא בסביבת Colab כדי לגשת לנתוני BigQuery ולטעון אותם.

  1. הקפידו לוודא שהחיוב מופעל בפרויקט בענן שלכם ב-Google Cloud.
  2. מפעילים את ממשקי ה-API של BigQuery ו-BigQuery Storage. < click here>
  3. עוברים אל הדף ליצירת מפתח לחשבון שירות.
  4. ברשימה Service account, בוחרים באפשרות New service account.
  5. כותבים שם בשדה Service account name.
  6. ברשימה Role בוחרים באפשרות Project > Owner.
  7. לוחצים על יצירה. קובץ JSON שמכיל את המפתח יורד למחשב.

בשלב הבא, נשתמש ב-Google Colab כדי לבצע עיבוד מקדים של הנתונים האלה ולאמן את מודל ההמלצות שלנו.

11. עיבוד מוקדם של נתונים ואימון מודל המלצות

בשלב הזה, נשתמש ב-notebook של Colab כדי לבצע את השלבים הבאים:

  1. ייבוא נתוני BigQuery לנוטבוק של Colab
  2. לעבד את הנתונים כדי להכין אותם לאימון המודל
  3. לאמן את מודל ההמלצות על נתוני הניתוח
  4. לייצא את המודל כמודל TF Lite
  5. פורסים את המודל במסוף Firebase כדי שנוכל להשתמש בו באפליקציה שלנו

לפני שנשיק את מחברת ההדרכה של Colab, נפעיל קודם את Firebase Model Management API כדי ש-Colab יוכל לפרוס את המודל שאומן במסוף Firebase.

הפעלת Firebase Model Management API

יצירת קטגוריה לאחסון מודלים של למידת מכונה

במסוף Firebase, עוברים אל Storage ולוחצים על Get started (תחילת העבודה). fbbea78f0eb3dc9f.png

פועלים לפי ההוראות כדי להגדיר את הדלי.

19517c0d6d2aa14d.png

הפעלת Firebase ML API

נכנסים אל הדף של Firebase ML API במסוף Google Cloud ולוחצים על Enable (הפעלה).

שימוש ב-notebook של Colab לאימון המודל ולפריסתו

פותחים את מחברת Colab באמצעות הקישור הבא ומשלימים את השלבים שמופיעים בה. אחרי שמסיימים את השלבים ב<term ref="High Priority Terms" id="0">נוטבוק של Colab</term>, קובץ מודל TF Lite נפרס ב<term ref="Low Priority Terms" id="4">מסוף Firebase</term>, ואפשר ל<term ref="Low Priority Terms" id="7">סנכרן</term> אותו עם האפליקציה.

פתיחה ב-Colab

12. הורדת המודל באפליקציה

בשלב הזה נשנה את האפליקציה כדי להוריד את המודל שאומן זה עתה מ-Firebase Machine Learning.

הוספת תלות ב-Firebase ML

כדי להשתמש במודלים של Firebase Machine Learning באפליקציה, צריך להוסיף את התלות הבאה (כדאי לוודא שהיא כבר נוספה):

app/build.grade.kts

implementation("com.google.firebase:firebase-ml-modeldownloader:24.1.2")

הורדת המודל באמצעות Firebase Model Manager API

מעתיקים את הקוד שבהמשך אל RecommendationClient.kt כדי להגדיר את התנאים להורדת המודל וליצור משימת הורדה לסנכרון המודל המרוחק עם האפליקציה.

RecommendationClient.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 עם קובץ המודל שהורדנו. בשלב הזה, קודם נטען מילון ותוויות כדי ללוות את המודל בשלב ההסקה, ואז נוסיף עיבוד מקדים כדי ליצור את הקלטים למודל שלנו ועיבוד פוסט כדי לחלץ את התוצאות מההסקה.

טעינת מילון ותוויות

התוויות שמשמשות ליצירת ההמלצות הפוטנציאליות על ידי מודל ההמלצות מפורטות בקובץ sorted_movie_vocab.json בתיקייה res/assets. מעתיקים את הקוד הבא כדי לטעון את המועמדים האלה.

RecommendationClient.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.")
        }
    }

הטמעה של עיבוד מקדים

בשלב העיבוד המקדים, אנחנו משנים את הצורה של נתוני הקלט כך שתתאים למה שהמודל שלנו מצפה. כאן, אנחנו מוסיפים ערך placeholder לאורך הקלט אם עדיין לא יצרנו הרבה לייקים של משתמשים. מעתיקים את הקוד הבא:

RecommendationClient.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
        }
    }


הפעלת המתרגם כדי ליצור המלצות

בדוגמה הזו אנחנו משתמשים במודל שהורדנו בשלב הקודם כדי להריץ הסקה על הקלט שעבר עיבוד מראש. אנחנו מגדירים את סוג הקלט והפלט של המודל ומריצים היקש כדי ליצור את ההמלצות לסרטים. מעתיקים את הקוד הבא לאפליקציה.

RecommendationClient.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()
            }
        }
    }



הטמעה של עיבוד לאחר ההמרה

לבסוף, בשלב הזה אנחנו מבצעים עיבוד אחרי של הפלט מהמודל, בוחרים את התוצאות עם רמת הביטחון הגבוהה ביותר ומסירים ערכים כלולים (סרטים שהמשתמש כבר סימן בלייק). מעתיקים את הקוד הבא לאפליקציה.

RecommendationClient.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. שימו לב שאפשר להכליל את הטכניקות ואת צינור הנתונים שמוצגים ב-codelab הזה ולהשתמש בהם גם להצגת סוגים אחרים של המלצות.

מה נכלל

  • Firebase ML
  • Firebase Analytics
  • ייצוא אירועים של ניתוח נתונים ל-BigQuery
  • עיבוד מראש של אירועים ב-Analytics
  • אימון מודל TensorFlow להמלצות
  • ייצוא המודל ופריסה שלו במסוף Firebase
  • הצגת המלצות לסרטים באפליקציה

השלבים הבאים

  • הטמעה של המלצות מ-Firebase ML באפליקציה.

מידע נוסף

יש לך שאלה?

דיווח על בעיות