Fügen Sie Empfehlungen zu Ihrer App mit TensorFlow Lite und Firebase hinzu – Android Codelab

1. Übersicht

Willkommen bei den Empfehlungen mit TensorFlow Lite und Firebase Codelab. In diesem Codelab erfahren Sie, wie Sie mit TensorFlow Lite und Firebase ein Empfehlungsmodell für Ihre App bereitstellen. Dieses Codelab basiert auf diesem TensorFlow Lite- Beispiel .

Empfehlungen ermöglichen es Apps, maschinelles Lernen zu nutzen, um jedem Benutzer auf intelligente Weise die relevantesten Inhalte bereitzustellen. Sie berücksichtigen früheres Benutzerverhalten, um App-Inhalte vorzuschlagen, mit denen der Benutzer in Zukunft möglicherweise interagieren möchte, indem sie ein Modell verwenden, das auf dem Gesamtverhalten einer großen Anzahl anderer Benutzer trainiert wurde.

In diesem Tutorial erfahren Sie, wie Sie mit Firebase Analytics Daten von den Benutzern Ihrer App erhalten, ein maschinelles Lernmodell für Empfehlungen aus diesen Daten erstellen und dieses Modell dann in einer Android-App verwenden, um Rückschlüsse zu ziehen und Empfehlungen zu erhalten. Unsere Empfehlungen schlagen insbesondere vor, welche Filme ein Benutzer angesichts der Liste der Filme, die ihm zuvor gefallen haben, am wahrscheinlichsten ansehen würde.

Was Sie lernen werden

  • Integrieren Sie Firebase Analytics in eine Android-App, um Daten zum Benutzerverhalten zu sammeln
  • Exportieren Sie diese Daten in Google Big Query
  • Verarbeiten Sie die Daten vor und trainieren Sie ein TF Lite-Empfehlungsmodell
  • Stellen Sie das TF Lite-Modell in Firebase ML bereit und greifen Sie über Ihre App darauf zu
  • Führen Sie die Geräteinferenz mithilfe des Modells aus, um Benutzern Empfehlungen vorzuschlagen

Was du brauchen wirst

  • Neueste Android Studio- Version.
  • Beispielcode.
  • Ein Testgerät mit Android 7+ und Google Play-Diensten 9.8 oder höher oder ein Emulator mit Google Play-Diensten 9.8 oder höher
  • Bei Verwendung eines Gerätes ein Verbindungskabel.

Wie werden Sie dieses Tutorial nutzen?

Lesen Sie es nur durch Lesen Sie es und absolvieren Sie die Übungen

Wie würden Sie Ihre Erfahrungen mit der Entwicklung von Android-Apps bewerten?

Anfänger Dazwischenliegend Kompetent

2. Holen Sie sich den Beispielcode

Klonen Sie das GitHub-Repository über die Befehlszeile.

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

3. Importieren Sie die Starter-App

Wählen Sie in Android Studio das Verzeichnis codelab-recommendations-android aus ( android_studio_folder.png ) aus dem Beispielcode-Download ( Datei > Öffnen > .../codelab-recommendations-android/start).

Sie sollten nun das Startprojekt in Android Studio geöffnet haben.

4. Erstellen Sie ein Firebase-Konsolenprojekt

Erstellen Sie ein neues Projekt

  1. Gehen Sie zur Firebase-Konsole .
  2. Wählen Sie Projekt hinzufügen (oder Projekt erstellen, wenn es das erste ist).
  3. Wählen Sie einen Projektnamen aus oder geben Sie ihn ein und klicken Sie auf Weiter .
  4. Stellen Sie sicher, dass „Google Analytics für dieses Projekt aktivieren“ aktiviert ist.
  5. Befolgen Sie die verbleibenden Einrichtungsschritte in der Firebase-Konsole und klicken Sie dann auf Projekt erstellen (oder Firebase hinzufügen, wenn Sie ein vorhandenes Google-Projekt verwenden).

5. Firebase hinzufügen

  1. Klicken Sie im Übersichtsbildschirm Ihres neuen Projekts auf das Android-Symbol, um den Einrichtungsworkflow zu starten.
  2. Geben Sie den Paketnamen des Codelabs ein: com.google.firebase.codelabs.recommendations
  3. Wählen Sie App registrieren aus.

Fügen Sie Ihrer App die Datei „google-services.json“ hinzu

Nachdem Sie den Paketnamen hinzugefügt und „Registrieren“ ausgewählt haben, klicken Sie auf „Google-services.json herunterladen“ , um Ihre Firebase-Android-Konfigurationsdatei zu erhalten. Kopieren Sie dann die Datei „google-services.json“ in das app Verzeichnis in Ihrem Projekt. Nachdem die Datei heruntergeladen wurde, können Sie die nächsten in der Konsole angezeigten Schritte überspringen (sie wurden bereits im Build-Android-Start-Projekt für Sie erledigt).

Fügen Sie Ihrer App das Google-Services-Plugin hinzu

Das Google-Services-Plugin verwendet die Datei google-services.json, um Ihre Anwendung für die Verwendung von Firebase zu konfigurieren. Die folgenden Zeilen sollten bereits zu den build.gradle.kts-Dateien im Projekt hinzugefügt werden (zur Bestätigung markieren):

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
}

Synchronisieren Sie Ihr Projekt mit Gradle-Dateien

Um sicherzustellen, dass alle Abhängigkeiten für Ihre App verfügbar sind, sollten Sie Ihr Projekt an dieser Stelle mit Gradle-Dateien synchronisieren. Wählen Sie in der Android Studio-Symbolleiste Datei > Projekt mit Gradle-Dateien synchronisieren .

6. Führen Sie die Starter-App aus

Nachdem Sie das Projekt nun in Android Studio importiert und das google-services -Plugin mit Ihrer JSON-Datei konfiguriert haben, können Sie die App zum ersten Mal ausführen. Schließen Sie Ihr Android-Gerät an und klicken Sie auf Ausführen ( ausführen.png )in der Android Studio-Symbolleiste.

Die App sollte auf Ihrem Gerät gestartet werden. An dieser Stelle sehen Sie eine funktionierende Anwendung, die eine Registerkarte mit einer Liste von Filmen, eine Registerkarte „Gefällt mir“-Filme und eine Registerkarte „Empfehlungen“ anzeigt. Sie können auf einen Film in der Filmliste klicken, um ihn zu Ihrer Like-Liste hinzuzufügen. Nachdem wir die verbleibenden Schritte des Codelabs abgeschlossen haben, können wir auf der Registerkarte „Empfehlungen“ Filmempfehlungen generieren.

7. Fügen Sie Firebase Analytics zur App hinzu

In diesem Schritt fügen Sie Firebase Analytics zur App hinzu, um Daten zum Benutzerverhalten zu protokollieren (in diesem Fall welche Filme einem Benutzer gefallen). Diese Daten werden in zukünftigen Schritten aggregiert verwendet, um das Empfehlungsmodell zu trainieren.

Fügen Sie die Abhängigkeit von Firebase Bill of Materials und Analytics hinzu

Die folgenden Abhängigkeiten sind erforderlich, um Firebase Analytics zu Ihrer App hinzuzufügen. Sie sollten bereits in der Datei app/build.gradle.kts enthalten sein (überprüfen).

app/build.grade.kts

implementation(platform("com.google.firebase:firebase-bom:32.0.0"))
implementation("com.google.firebase:firebase-analytics-ktx")

Richten Sie Firebase Analytics in der App ein

Das LikedMoviesViewModel enthält Funktionen zum Speichern der Filme, die dem Benutzer gefallen. Jedes Mal, wenn dem Benutzer ein neuer Film gefällt, möchten wir auch ein Analyseprotokollereignis senden, um dieses Like aufzuzeichnen.

Fügen Sie die Funktion onMovieLiked mit dem folgenden Code hinzu, um ein Analyseereignis zu registrieren, wenn der Benutzer auf einen Film mit „Gefällt mir“ klickt.

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

Fügen Sie das folgende Feld und die folgende Funktion hinzu, um ein Analytics-Ereignis zu protokollieren, wenn ein Film zur Liste „Gefällt mir“ des Benutzers hinzugefügt wird.

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. Testen Sie Ihre Analytics-Integration

In diesem Schritt generieren wir Analytics-Ereignisse in der App und überprüfen, ob sie an die Firebase Console gesendet werden.

Aktivieren Sie die Analytics-Debug-Protokollierung

Firebase Analytics ist darauf ausgelegt, die Akkulaufzeit des Benutzers zu maximieren, Ereignisse auf dem Gerät zu bündeln und sie nur gelegentlich an Firebase zu senden. Zu Debugzwecken können wir dieses Verhalten deaktivieren, um Ereignisse zu sehen, während sie in Echtzeit protokolliert werden, indem wir den folgenden Befehl in der Shell ausführen.

Terminal

adb shell setprop debug.firebase.analytics.app com.google.firebase.codelabs.recommendations

Überprüfen Sie, ob Analytics-Ereignisse generiert werden

  1. Öffnen Sie in Android Studio das Logcat-Fenster, um die Protokollierung Ihrer App zu überprüfen.
  2. Legen Sie den Logcat-Filter auf die Zeichenfolge „Logging-Ereignis“ fest.
  3. Stellen Sie sicher, dass „select_item“ Analytics-Ereignisse jedes Mal ausgegeben werden, wenn Sie einen Film in der App mit „Gefällt mir“ markieren.

Zu diesem Zeitpunkt haben Sie Firebase Analytics erfolgreich in Ihre App integriert. Wenn Benutzer Ihre App verwenden und Filme mögen, werden ihre „Gefällt mir“-Angaben zusammengefasst protokolliert. Wir werden diese aggregierten Daten im Rest dieses Codelabs verwenden, um unser Empfehlungsmodell zu trainieren. Der folgende Schritt ist optional, um zu sehen, dass dieselben Analytics-Ereignisse, die Sie in Logcat gesehen haben, auch in die Firebase-Konsole gestreamt werden. Springen Sie gerne zur nächsten Seite.

Optional: Bestätigen Sie Analytics-Ereignisse in der Firebase Console

  1. Gehen Sie zur Firebase-Konsole .
  2. Wählen Sie unter Analytics die Option DebugView aus
  3. Wählen Sie in Android Studio „Ausführen“ , um die App zu starten und einige Filme zu Ihrer „Likes“-Liste hinzuzufügen.
  4. Überprüfen Sie im DebugView der Firebase-Konsole, ob diese Ereignisse protokolliert werden, wenn Sie Filme zur App hinzufügen.

9. Analytics-Daten nach Big Query exportieren

Big Query ist ein Google Cloud-Produkt, mit dem Sie große Datenmengen untersuchen und verarbeiten können. In diesem Schritt verbinden Sie Ihr Firebase Console-Projekt mit Big Query, sodass die von Ihrer App generierten Analytics-Daten automatisch nach Big Query exportiert werden.

Aktivieren Sie den Big-Query-Export

  1. Gehen Sie zur Firebase-Konsole .
  2. Wählen Sie das Zahnradsymbol „Einstellungen“ neben „Projektübersicht“ und dann „Projekteinstellungen“ aus
  3. Wählen Sie die Registerkarte Integrationen .
  4. Wählen Sie im BigQuery- Block „Verknüpfen“ (oder „Verwalten “) aus.
  5. Wählen Sie im Schritt „Informationen zum Verknüpfen von Firebase mit BigQuery“ die Option „ Weiter“ aus.
  6. Klicken Sie im Abschnitt „Integration konfigurieren“ auf den Schalter, um das Senden von Google Analytics-Daten zu aktivieren, und wählen Sie „Mit BigQuery verknüpfen“ aus.

Sie haben jetzt Ihr Firebase-Konsolenprojekt aktiviert, um Firebase Analytics-Ereignisdaten automatisch an Big Query zu senden. Dies geschieht automatisch und ohne weitere Interaktion. Allerdings kann es sein, dass der erste Export, der den Analysedatensatz in BigQuery erstellt, erst nach 24 Stunden erfolgt. Nachdem der Datensatz erstellt wurde, exportiert Firebase kontinuierlich neue Analytics-Ereignisse nach Big Query in die Intraday-Tabelle und gruppiert Ereignisse vergangener Tage in der Ereignistabelle.

Das Training eines Empfehlungsmodells erfordert viele Daten. Da wir noch keine App haben, die große Datenmengen generiert, importieren wir im nächsten Schritt einen Beispieldatensatz in BigQuery, um ihn für den Rest dieses Tutorials zu verwenden.

10. Verwenden Sie BigQuery, um Modelltrainingsdaten abzurufen

Nachdem wir nun unsere Firebase-Konsole für den Export nach BigQuery verbunden haben, werden unsere App-Analyse-Ereignisdaten nach einiger Zeit automatisch in der BigQuery-Konsole angezeigt. Um erste Daten für dieses Tutorial zu erhalten, importieren wir in diesem Schritt einen vorhandenen Beispieldatensatz in Ihre BigQuery-Konsole, um ihn zum Trainieren unseres Empfehlungsmodells zu verwenden.

Beispieldatensatz in BigQuery importieren

  1. Gehen Sie zum BigQuery- Dashboard in der Google Cloud Console.
  2. Wählen Sie im Menü Ihren Projektnamen aus.
  3. Wählen Sie unten in der linken BigQuery-Navigation Ihren Projektnamen aus, um Details anzuzeigen.
  4. Wählen Sie „Datensatz erstellen“ , um den Bereich zum Erstellen des Datensatzes zu öffnen.
  5. Geben Sie „firebase_recommendations_dataset“ als Datensatz-ID ein und wählen Sie „Datensatz erstellen“ aus.
  6. Der neue Datensatz wird im linken Menü unter dem Projektnamen angezeigt. Klick es.
  7. Wählen Sie Tabelle erstellen aus , um das Tabellenerstellungsfenster zu öffnen.
  8. Wählen Sie für „Tabelle erstellen aus “ „Google Cloud Storage“ aus.
  9. Geben Sie im Feld „Datei aus GCS-Bucket auswählen “ „gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt“ ein.
  10. Wählen Sie „JSONL“ im Dropdown-Menü „ Dateiformat“ .
  11. Geben Sie „recommendations_table“ als Tabellennamen ein.
  12. Aktivieren Sie das Kontrollkästchen unter Schema > Automatische Erkennung > Schema und Eingabeparameter
  13. Wählen Sie Tabelle erstellen

Entdecken Sie den Beispieldatensatz

An dieser Stelle können Sie optional das Schema erkunden und eine Vorschau dieses Datensatzes anzeigen.

  1. Wählen Sie im linken Menü „firebase-recommendations-dataset“ aus, um die darin enthaltenen Tabellen zu erweitern.
  2. Wählen Sie die Tabelle „Empfehlungen-Tabelle“ aus, um das Tabellenschema anzuzeigen.
  3. Wählen Sie „Vorschau“ , um die tatsächlichen Analytics-Ereignisdaten anzuzeigen, die diese Tabelle enthält.

Erstellen Sie Anmeldeinformationen für ein Dienstkonto

Jetzt erstellen wir in unserem Google Cloud Console-Projekt Anmeldeinformationen für Dienstkonten, die wir im folgenden Schritt in der Colab-Umgebung verwenden können, um auf unsere BigQuery-Daten zuzugreifen und diese zu laden.

  1. Stellen Sie sicher, dass die Abrechnung für Ihr Google Cloud-Projekt aktiviert ist.
  2. Aktivieren Sie die APIs BigQuery und BigQuery Storage API. < hier klicken >
  3. Gehen Sie zur Seite Dienstkontoschlüssel erstellen .
  4. Wählen Sie in der Liste „Dienstkonto“ die Option „Neues Dienstkonto“ aus.
  5. Geben Sie im Feld Dienstkontoname einen Namen ein.
  6. Wählen Sie in der Rollenliste „Projekt“ > „Eigentümer“ aus.
  7. Klicken Sie auf Erstellen . Eine JSON-Datei, die Ihre Schlüsseldownloads auf Ihren Computer enthält.

Im nächsten Schritt werden wir Google Colab verwenden, um diese Daten vorzuverarbeiten und unser Empfehlungsmodell zu trainieren.

11. Daten vorverarbeiten und Empfehlungsmodell trainieren

In diesem Schritt verwenden wir ein Colab-Notizbuch, um die folgenden Schritte auszuführen:

  1. Importieren Sie die BigQuery-Daten in das Colab-Notizbuch
  2. Verarbeiten Sie die Daten vor, um sie für das Modelltraining vorzubereiten
  3. Trainieren Sie das Empfehlungsmodell anhand der Analysedaten
  4. Exportieren Sie das Modell als TF-Lite-Modell
  5. Stellen Sie das Modell in der Firebase-Konsole bereit, damit wir es in unserer App verwenden können

Bevor wir das Colab-Schulungsnotizbuch starten, aktivieren wir zunächst die Firebase Model Management API, damit Colab das trainierte Modell auf unserer Firebase-Konsole bereitstellen kann.

Aktivieren Sie die Firebase Model Management API

Erstellen Sie einen Bucket zum Speichern Ihrer ML-Modelle

Gehen Sie in Ihrer Firebase-Konsole zu „Speicher“ und klicken Sie auf „Erste Schritte“. fbbea78f0eb3dc9f.png

Folgen Sie dem Dialog, um Ihren Eimer einzurichten.

19517c0d6d2aa14d.png

Aktivieren Sie die Firebase ML-API

Gehen Sie zur Seite „Firebase ML API“ in der Google Cloud Console und klicken Sie auf „Aktivieren“.

Verwenden Sie das Colab-Notebook, um das Modell zu trainieren und bereitzustellen

Öffnen Sie das Colab-Notizbuch über den folgenden Link und führen Sie die darin enthaltenen Schritte aus. Nachdem Sie die Schritte im Colab-Notizbuch abgeschlossen haben, wird eine TF-Lite-Modelldatei auf der Firebase-Konsole bereitgestellt, die wir mit unserer App synchronisieren können.

In Colab öffnen

12. Laden Sie das Modell in Ihrer App herunter

In diesem Schritt ändern wir unsere App, um das Modell herunterzuladen, das wir gerade von Firebase Machine Learning trainiert haben.

Firebase ML-Abhängigkeit hinzufügen

Die folgende Abhängigkeit ist erforderlich, um Firebase Machine Learning-Modelle in Ihrer App zu verwenden. Es sollte bereits hinzugefügt (überprüfen) sein.

app/build.grade.kts

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

Laden Sie das Modell mit der Firebase Model Manager API herunter

Kopieren Sie den folgenden Code in RecommendationClient.kt , um die Bedingungen festzulegen, unter denen der Modell-Download erfolgt, und erstellen Sie eine Download-Aufgabe, um das Remote-Modell mit unserer App zu synchronisieren.

EmpfehlungClient.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. Integrieren Sie das Tensorflow Lite-Empfehlungsmodell in Ihre App

Mit der Tensorflow Lite-Laufzeit können Sie Ihr Modell in der App verwenden, um Empfehlungen zu generieren. Im vorherigen Schritt haben wir einen TFlite-Interpreter mit der heruntergeladenen Modelldatei initialisiert. In diesem Schritt laden wir zunächst ein Wörterbuch und Beschriftungen, die unser Modell im Inferenzschritt begleiten. Anschließend fügen wir eine Vorverarbeitung hinzu, um die Eingaben für unser Modell zu generieren, und eine Nachverarbeitung, mit der wir die Ergebnisse aus unserer Inferenz extrahieren .

Wörterbuch und Beschriftungen laden

Die Labels, die vom Empfehlungsmodell zum Generieren der Empfehlungskandidaten verwendet werden, sind in der Datei sorted_movie_vocab.json im Ordner res/assets aufgeführt. Kopieren Sie den folgenden Code, um diese Kandidaten zu laden.

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

Implementieren Sie die Vorverarbeitung

Im Vorverarbeitungsschritt ändern wir die Form der Eingabedaten, um sie an die Erwartungen unseres Modells anzupassen. Hier füllen wir die Eingabelänge mit einem Platzhalterwert auf, wenn wir nicht bereits viele Benutzer-Likes generiert haben. Kopieren Sie den folgenden Code:

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


Führen Sie den Interpreter aus, um Empfehlungen zu generieren

Hier verwenden wir das Modell, das wir in einem vorherigen Schritt heruntergeladen haben, um Rückschlüsse auf unsere vorverarbeiteten Eingaben zu ziehen. Wir legen die Art der Ein- und Ausgabe für unser Modell fest und führen eine Inferenz durch, um unsere Filmempfehlungen zu generieren. Kopieren Sie den folgenden Code in Ihre App.

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



Implementieren Sie die Nachbearbeitung

Schließlich verarbeiten wir in diesem Schritt die Ausgabe unseres Modells nach, wählen die Ergebnisse mit der höchsten Zuverlässigkeit aus und entfernen enthaltene Werte (Filme, die dem Benutzer bereits gefallen haben). Kopieren Sie den folgenden Code in Ihre App.

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


Testen Sie Ihre App!

Führen Sie Ihre App erneut aus. Wenn Sie ein paar Filme auswählen, sollte das neue Modell automatisch heruntergeladen werden und Empfehlungen generiert werden!

14. Herzlichen Glückwunsch!

Sie haben mithilfe von TensorFlow Lite und Firebase eine Empfehlungsfunktion in Ihre App integriert. Beachten Sie, dass die in diesem Codelab gezeigten Techniken und Pipelines verallgemeinert und auch für andere Arten von Empfehlungen verwendet werden können.

Was wir abgedeckt haben

  • Firebase ML
  • Firebase Analytics
  • Analyseereignisse nach BigQuery exportieren
  • Analyseereignisse vorverarbeiten
  • Trainieren Sie Empfehlungen für das TensorFlow-Modell
  • Modell exportieren und in der Firebase-Konsole bereitstellen
  • Bieten Sie Filmempfehlungen in einer App an

Nächste Schritte

  • Implementieren Sie Firebase ML-Empfehlungen in Ihrer App.

Erfahren Sie mehr

Eine Frage haben?

Probleme melden