TensorFlow Lite ve Firebase ile uygulamanıza Öneriler ekleyin - Android Codelab

1. Genel Bakış

TensorFlow Lite ve Firebase codelab ile Önerilere hoş geldiniz. Bu kod laboratuvarında, uygulamanıza bir öneri modeli dağıtmak için TensorFlow Lite ve Firebase'i nasıl kullanacağınızı öğreneceksiniz. Bu codelab bu TensorFlow Lite dayanmaktadır örneğin .

Öneriler, uygulamaların her kullanıcı için en alakalı içeriği akıllı bir şekilde sunmak için makine öğrenimini kullanmasına olanak tanır. Çok sayıda başka kullanıcının toplu davranışı üzerine eğitilmiş bir model kullanarak, kullanıcının gelecekte etkileşimde bulunmak isteyebileceği uygulama içeriğini önermek için geçmiş kullanıcı davranışlarını dikkate alırlar.

Bu eğitici, Firebase Analytics ile uygulamanızın kullanıcılarından nasıl veri elde edileceğini, bu verilerden öneriler için bir makine öğrenimi modelinin nasıl oluşturulacağını ve ardından bu modeli bir Android uygulamasında çıkarım yapmak ve öneriler almak için nasıl kullanacağınızı gösterir. Özellikle önerilerimiz, kullanıcının daha önce beğendiği filmlerin listesi göz önüne alındığında, kullanıcının büyük olasılıkla hangi filmleri izleyeceğini önerecektir.

ne öğreneceksin

  • Kullanıcı davranışı verilerini toplamak için Firebase Analytics'i bir android uygulamasına entegre edin
  • Bu verileri Google Big Query'ye aktarın
  • Verileri önceden işleyin ve bir TF Lite öneri modeli eğitin
  • TF Lite modelini Firebase ML'ye dağıtın ve uygulamanızdan ona erişin
  • Kullanıcılara öneriler önermek için modeli kullanarak cihaz çıkarsamasında çalıştırın

Neye ihtiyacın olacak

  • Android Studio sürüm 3.4+.
  • Basit kod.
  • Android 2.3+ ve Google Play hizmetleri 9.8 veya üstü olan bir test cihazı veya Google Play hizmetleri 9.8 veya üstü olan bir Emulator
  • Bir cihaz kullanıyorsanız, bir bağlantı kablosu.

Bu öğreticiyi nasıl kullanacaksınız?

Sadece baştan sona oku Okuyun ve alıştırmaları tamamlayın

Android uygulamaları oluşturma deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta düzey Yetkin

2. Örnek kodu alın

GitHub deposunu komut satırından klonlayın.

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

3. Başlangıç ​​uygulamasını içe aktarın

Android Studio itibaren seçmek codelab-recommendations-android (dizin android_studio_folder.png ) Örnek kod indir (Dosya gelen> Aç> ... / codelab-tavsiyeler-android /) başlatın.

Artık Android Studio'da başlangıç ​​projesini açmış olmalısınız.

4. Firebase konsol projesi oluşturun

Yeni bir proje oluştur

  1. Git Firebase konsoluna .
  2. Ekleme projeyi seçin (veya ilk biriyse bir proje oluşturun).
  3. Seçin veya proje adı girin ve Devam'ı tıklayın.
  4. "Bu proje için Google Analytics'i etkinleştir"in etkinleştirildiğinden emin olun.
  5. Firebase konsolunda kalan kurulum adımlarını izleyin, ardından Proje oluştur'u (veya mevcut bir Google projesi kullanıyorsanız Firebase Ekle'yi) tıklayın.

5. Firebase'i ekleyin

  1. Yeni projenizin genel bakış ekranından, kurulum iş akışını başlatmak için Android simgesine tıklayın.
  2. Codelab paket adını girin: com.google.firebase.codelabs.recommendations
  3. Kayıt uygulamasını seçin.

google-services.json dosyasını uygulamanıza ekleyin

Paket adını ekleme ve Kayıt seçtikten sonra, o içine google-services.json dosyayı kopyalamak için Firebase Android yapılandırma dosyasını edinmek için İndirme google-services.json tıklayın app projenizde dizinde. Dosya indirildikten sonra (onlar zaten birikmesi android başlangıç projesinde sizin için yapılmış ettik) konsolda gösterilen sonraki adımları atlayın edebilirsiniz.

Uygulamanıza google hizmetleri eklentisi ekleyin

google-services eklentisi, uygulamanızı Firebase'i kullanacak şekilde yapılandırmak için google-services.json dosyasını kullanır. Projedeki build.gradle dosyalarına aşağıdaki satırlar zaten eklenmiş olmalıdır (onaylamak için kontrol edin):

uygulama/build.grade

apply plugin: 'com.google.gms.google-services'

yapı. derece

classpath 'com.google.gms:google-services:4.3.4'

Projenizi gradle dosyalarıyla senkronize edin

Uygulamanızda tüm bağımlılıkların mevcut olduğundan emin olmak için bu noktada projenizi gradle dosyalarıyla senkronize etmelisiniz. Dosya> Android Studio araç çubuğundan Gradle Files ile senkronize etme Projesi.

6. Başlangıç ​​uygulamasını çalıştırın

Şimdi Android Studio içine projeyi ithal ve yapılandırılmış olması google-services JSON dosyası ile eklentisi, ilk kez uygulamayı çalıştırmak için hazır. (Android cihazınızı bağlayın ve Çalıştır tıklayın yürüt.png ) Android Studio araç çubuğunda.

Uygulama, cihazınızda başlamalıdır. Bu noktada, film listesi içeren bir sekme, Beğenilen filmler sekmesi ve Öneriler sekmesini gösteren çalışan bir uygulama görebilirsiniz. Beğenilenler listenize eklemek için film listesindeki bir filmi tıklayabilirsiniz. Codelab'in kalan adımlarını tamamladıktan sonra, Öneriler sekmesinde film önerileri oluşturabileceğiz.

7. Uygulamaya Firebase Analytics'i ekleyin

Bu adımda, kullanıcı davranışı verilerini (bu durumda bir kullanıcının hangi filmleri beğendiğini) günlüğe kaydetmek için uygulamaya Firebase Analytics'i ekleyeceksiniz. Bu veriler, öneriler modelini eğitmek için gelecekteki adımlarda toplu olarak kullanılacaktır.

Firebase Analytics bağımlılığı ekleyin

Uygulamanıza Firebase Analytics eklemek için aşağıdaki bağımlılık gereklidir. Zaten app/build.gradle dosyasına dahil edilmiş olmalıdır (doğrulayın).

uygulama/build.grade

implementation 'com.google.firebase:firebase-analytics-ktx:17.6.0'

Uygulamada Firebase Analytics'i kurun

LikedMoviesViewModel kullanıcı sever filmleri depolamak için işlevler içerir. Kullanıcı yeni bir filmi her beğendiğinde, bu beğeniyi kaydetmek için bir analiz günlüğü olayı da göndermek istiyoruz.

Kullanıcı bir film gibi tıkladığında bir analiz olayı kaydetmek için aşağıdaki kodla onMovieLiked işlevini ekleyin.

BeğenilenMoviesViewModel.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())
    }
       
}

Kullanıcının Beğenilenler listesine bir film eklendiğinde bir Analytics etkinliğini günlüğe kaydetmek için aşağıdaki alanı ve işlevi ekleyin.

BeğenilenMoviesViewModel.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 entegrasyonunuzu test edin

Bu adımda, uygulamada Analytics etkinlikleri oluşturacağız ve bunların Firebase Konsoluna gönderildiklerini doğrulayacağız.

Analytics Hata Ayıklama Günlüğünü Etkinleştir

Firebase Analytics, kullanıcının pil ömrünü en üst düzeye çıkarmak için tasarlanmıştır ve cihazdaki olayları gruplandırır ve yalnızca ara sıra Firebase'e gönderir. Hata ayıklama amacıyla, kabukta aşağıdaki komutu çalıştırarak olayları gerçek zamanlı olarak günlüğe kaydederken görmek için bu davranışı devre dışı bırakabiliriz.

terminal

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

Analytics etkinliklerinin oluşturulduğunu doğrulayın

  1. Android stüdyosunda, uygulamanızdan günlüğe kaydetmeyi incelemek için Logcat penceresini açın.
  2. Logcat filtresini "Logging event" dizisine ayarlayın.
  3. Uygulamada bir filmi her beğendiğinizde "select_item" Analytics etkinliklerinin yayınlandığını doğrulayın.

Bu noktada, Firebase Analytics'i uygulamanıza başarıyla entegre ettiniz. Kullanıcılar uygulamanızı kullandıkça ve filmleri beğendikçe beğenileri toplu olarak kaydedilir. Öneri modelimizi eğitmek için bu kod laboratuvarının geri kalanında bu toplu verileri kullanacağız. Aşağıdaki, Logcat'te gördüğünüz aynı Analytics olaylarının Firebase konsoluna akışını da görmek için isteğe bağlı bir adımdır. Bir sonraki sayfaya geçmekten çekinmeyin.

Opsiyonel: Firebase Konsolu Onayla Analytics etkinleri

  1. Git Firebase konsoluna .
  2. Analytics altında DebugView seçin
  3. Android Studio'da, uygulamayı başlatmak için Çalıştır seçmek ve Beğendim listeye bazı filmler ekleyin.
  4. Firebase konsolunun DebugView'ında, uygulamaya film eklerken bu olayların günlüğe kaydedildiğini doğrulayın.

9. Analytics verilerini Big Query'ye aktarın

Big Query, büyük miktarda veriyi incelemenize ve işlemenize olanak tanıyan bir Google Cloud ürünüdür. Bu adımda, uygulamanız tarafından oluşturulan Analytics verilerinin otomatik olarak Big Query'ye aktarılması için Firebase Console projenizi Big Query'ye bağlayacaksınız.

Big Query dışa aktarımını etkinleştir

  1. Git Firebase konsoluna .
  2. Bir sonraki Proje Genel Bakış Ayarlar dişli simgesini seçin ve ardından Proje ayarlarını seçmek
  3. Entegrasyonları sekmesini seçin.
  4. Linki seçin (veya Yönetme) BigQuery bloğunun içinde.
  5. Toplu Veri Sorgulama adıma Bağlama Firebase Hakkında seçin Sonraki.
  6. Yapılandırma entegrasyon bölümünde, Google Analytics verilerini gönderme etkinleştirmek ve BigQuery'ye Linki seçmek için anahtarı tıklatın.

Artık Firebase konsol projenizi, Firebase Analytics etkinlik verilerini otomatik olarak Big Query'ye gönderecek şekilde etkinleştirdiniz. Bu, başka bir etkileşim olmadan otomatik olarak gerçekleşir, ancak BigQuery'de analiz veri kümesini oluşturan ilk dışa aktarma 24 saat boyunca gerçekleşmeyebilir. Veri kümesi oluşturulduktan sonra, Firebase sürekli olarak yeni Analytics etkinliklerini gün içi tablosuna Big Query'ye aktarır ve olaylar tablosunda geçmiş günlere ait etkinlikleri gruplandırır.

Bir öneri modelini eğitmek çok fazla veri gerektirir. Halihazırda büyük miktarda veri üreten bir uygulamamız olmadığı için bir sonraki adımda, bu eğiticinin geri kalanında kullanmak üzere örnek bir veri kümesini BigQuery'ye aktaracağız.

10. Model eğitim verilerini elde etmek için BigQuery'yi kullanın

BigQuery'ye dışa aktarmak için Firebase Konsolumuzu bağladığımıza göre, uygulama analizi olay verilerimiz bir süre sonra otomatik olarak BigQuery konsolunda görünecektir. Bu eğiticinin amaçları doğrultusunda bazı ilk verileri almak için bu adımda, öneriler modelimizi eğitmek için kullanmak üzere mevcut bir örnek veri kümesini BigQuery konsolunuza aktaracağız.

Örnek veri kümesini BigQuery'ye aktarın

  1. Git BigQuery Google bulut konsolundaki pano.
  2. Menüden projenizin adını seçin.
  3. Ayrıntıları görmek için BigQuery sol gezinme bölümünün alt kısmında proje adınızı seçin.
  4. Veri kümesi oluşturma panelini açmak için veri kümesi oluşturma seçin.
  5. Veri kümesi kimliği için 'firebase_recommendations_dataset' yazın ve veri kümesini oluştur seçeneğini belirleyin.
  6. Yeni veri seti, proje adının altındaki sol menüde görünecektir. Tıkla.
  7. Tablo oluşturma panelini açmak için bir tablo oluşturun seçin.
  8. Select 'Google Bulut Depolama' dan tablo oluşturun için.
  9. GCS kova alanından seç dosyasında, 'gs: //firebase-recommendations/recommendations-test/formatted_data_filtered.txt' girin.
  10. Açılır Dosya formatında 'JSONL' seçin.
  11. Tablo adı için 'recommendations_table' girin.
  12. Şeması altında kutuyu işaretleyin> Otomatik> Şema ve giriş parametreleri tespit
  13. Tablo oluşturun seç

Örnek veri kümesini keşfedin

Bu noktada isteğe bağlı olarak şemayı keşfedebilir ve bu veri kümesini önizleyebilirsiniz.

  1. Sol menüde Seç-veri kümesi Firebase-tavsiyeler içerdiği tabloları genişletmek üzere.
  2. Tablo şema görüntülemek için tavsiyeler masa tablosunu seçin.
  3. Bu tablo içeren gerçek Analytics Etkinlik verilerini görmek için Önizleme seçin.

Hizmet hesabı kimlik bilgileri oluşturun

Şimdi, BigQuery verilerimize erişmek ve yüklemek için aşağıdaki adımda Colab ortamında kullanabileceğimiz Google Cloud konsol projemizde hizmet hesabı kimlik bilgileri oluşturacağız.

  1. Google Cloud projeniz için faturalandırmanın etkinleştirildiğinden emin olun.
  2. BigQuery ve BigQuery Storage API API'lerini etkinleştirin. < Buraya tıklayın >
  3. Git Hizmet Hesabı anahtarı oluşturmak sayfa .
  4. Servis hesap listesinden, Yeni hizmet hesabını seçin.
  5. Servis hesabı adı alanına bir ad girin.
  6. Rol listesinden, Project> Sahibi seçin.
  7. Oluştur tıklayın. Bilgisayarınıza indirdiğiniz anahtarları içeren bir JSON dosyası.

Bir sonraki adımda, bu verileri önceden işlemek ve öneriler modelimizi eğitmek için Google Colab'ı kullanacağız.

11. Verileri ön işleme ve eğitim önerileri modeli

Bu adımda, aşağıdaki adımları gerçekleştirmek için bir Colab not defteri kullanacağız:

  1. BigQuery verilerini Colab not defterine aktarın
  2. Model eğitimi için hazırlamak için verileri önceden işlemek
  3. öneriler modelini analitik veriler üzerinde eğitin
  4. modeli bir TF lite modeli olarak dışa aktar
  5. modeli uygulamamızda kullanabilmemiz için Firebase Konsoluna dağıtın

Colab eğitim not defterini başlatmadan önce, Colab'ın eğitilmiş modeli Firebase konsolumuza dağıtabilmesi için ilk olarak Firebase Model Management API'sini etkinleştireceğiz.

Firebase Model Management API'yi Etkinleştir

ML modellerinizi depolamak için bir paket oluşturun

Firebase Konsolunuzda Depolama'ya gidin ve Başlayın'a tıklayın. fbbea78f0eb3dc9f.png

Kovanızı kurmak için diyaloğu takip edin.

19517c0d6d2aa14d.png

Firebase ML API'sini etkinleştirin

Git Firebase ML API sayfasına Google Bulut Konsol'da ve Etkinleştir'i tıklayın.

Modeli eğitmek ve dağıtmak için Colab not defterini kullanın

Aşağıdaki bağlantıyı kullanarak ortak çalışma defterini açın ve içindeki adımları tamamlayın. Colab not defterindeki adımları tamamladıktan sonra, uygulamamızla senkronize edebileceğimiz Firebase konsoluna dağıtılmış bir TF lite model dosyanız olacak.

Colab'da aç

12. Modeli uygulamanıza indirin

Bu adımda, Firebase Machine Learning'den yeni eğittiğimiz modeli indirmek için uygulamamızı değiştireceğiz.

Firebase ML bağımlılığı ekleyin

Uygulamanızda Firebase Machine Learning modellerini kullanmak için aşağıdaki bağımlılık gereklidir. Zaten eklenmiş olmalıdır (doğrulayın).

uygulama/build.grade

implementation 'com.google.firebase:firebase-ml-model-interpreter:22.0.4'

Modeli Firebase Model Manager API ile indirin

Model indir oluştuğu koşulları kurmak ve bizim app uzaktan modeli senkronize etmek için bir indirme görevi oluşturmak için RecommendationClient.kt içine aşağıdaki kodu kopyalayın.

ÖneriClient.kt

    private fun downloadModel(modelName: String) {
        val remoteModel = FirebaseCustomRemoteModel.Builder(modelName).build()
        val firebaseModelManager = FirebaseModelManager.getInstance()
        firebaseModelManager
            .isModelDownloaded(remoteModel)
            .continueWithTask { task ->
                // Create update condition if model is already downloaded, otherwise create download
                // condition.
                val conditions = if (task.result != null && task.result == true) {
                    FirebaseModelDownloadConditions.Builder()
                        .requireWifi()
                        .build() // Update condition that requires wifi.
                } else {
                    FirebaseModelDownloadConditions.Builder().build(); // Download condition.
                }
                firebaseModelManager.download(remoteModel, conditions)
            }
            .addOnSuccessListener {
                firebaseModelManager.getLatestModelFile(remoteModel)
                    .addOnCompleteListener {
                        val model = it.result
                        if (model == null) {
                            showToast(context, "Failed to get model file.")
                        } else {
                            showToast(context, "Downloaded remote model")
                            GlobalScope.launch { initializeInterpreter(model) }
                        }
                    }
            }
            .addOnFailureListener {
                showToast(context, "Model download failed for recommendations, please check your connection.")
            }
    }



13. Tensorflow Lite öneri modelini uygulamanıza entegre edin

Tensorflow Lite çalışma zamanı, öneriler oluşturmak için uygulamadaki modelinizi kullanmanıza izin verir. Bir önceki adımda indirdiğimiz model dosyasıyla bir TFlite yorumlayıcısını başlattık. Bu adımda, ilk olarak çıkarım adımında modelimize eşlik edecek bir sözlük ve etiketler yükleyeceğiz, ardından modelimize girdileri oluşturmak için ön işleme ekleyeceğiz ve sonuçları çıkarımdan çıkaracağımız son işleme ekleyeceğiz. .

Sözlük ve Etiketleri Yükle

Tavsiyeler modeli tarafından tavsiye adayları üretmek için kullanılan etiketler res dosya sorted_movie_vocab.json listelenen / varlıklar klasörü. Bu adayları yüklemek için aşağıdaki kodu kopyalayın.

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

Ön İşlemi Uygula

Ön işleme adımında, modelimizin beklediğiyle eşleşmesi için girdi verilerinin biçimini değiştiririz. Burada, zaten çok sayıda kullanıcı beğenisi oluşturmadıysak, giriş uzunluğunu bir yer tutucu değeriyle doldururuz. Aşağıdaki kodu kopyalayın:

ÖneriClient.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
        }
    }


Öneriler oluşturmak için yorumlayıcıyı çalıştırın

Burada, önceden işlenmiş girdimiz üzerinde çıkarım yapmak için bir önceki adımda indirdiğimiz modeli kullanıyoruz. Modelimiz için girdi ve çıktı türünü belirledik ve film önerilerimizi oluşturmak için çıkarım yaptık. Aşağıdaki kodu uygulamanıza kopyalayın.

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



İşlem Sonrası Uygula

Son olarak, bu adımda, en yüksek güvenle sonuçları seçerek ve içerdiği değerleri (kullanıcının zaten beğendiği filmler) kaldırarak, modelimizin çıktısını son işleme tabi tutarız. Aşağıdaki kodu uygulamanıza kopyalayın.

ÖneriClient.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
        }
    }


Uygulamanızı test edin!

Uygulamanızı yeniden çalıştırın. Birkaç film seçtiğinizde, yeni modeli otomatik olarak indirmeli ve öneriler üretmeye başlamalıdır!

14. Tebrikler!

TensorFlow Lite ve Firebase kullanarak uygulamanıza bir öneri özelliği eklediniz. Bu kod laboratuvarında gösterilen tekniklerin ve ardışık düzenin genelleştirilebileceğini ve diğer türde önerilere hizmet etmek için de kullanılabileceğini unutmayın.

Neyi kapsadık

  • Firebase ML
  • Firebase Analytics
  • Analiz olaylarını BigQuery'ye aktarın
  • Ön işleme analitik olayları
  • Tren önerileri TensorFlow modeli
  • Modeli dışa aktarın ve Firebase Konsoluna dağıtın
  • Bir uygulamada film önerileri sunun

Sonraki adımlar

  • Uygulamanızda Firebase ML önerilerini uygulayın.

Daha fazla bilgi edin

Sorunuz mu var?

Sorunları Bildir