Thêm Đề xuất vào ứng dụng của bạn với TensorFlow Lite và Firebase - Android Codelab

1. Sơ lượt

Chào mừng bạn đến với Đề xuất với TensorFlow Lite và bảng mã Firebase. Trong bảng mã này, bạn sẽ học cách sử dụng TensorFlow Lite và Firebase để triển khai mô hình đề xuất cho ứng dụng của mình. Bộ mã này dựa trên ví dụ TensorFlow Lite này.

Các đề xuất cho phép các ứng dụng sử dụng công nghệ máy học để phân phát nội dung phù hợp nhất cho từng người dùng một cách thông minh. Họ tính đến hành vi của người dùng trong quá khứ để đề xuất nội dung ứng dụng mà người dùng có thể muốn tương tác trong tương lai bằng cách sử dụng mô hình được đào tạo về hành vi tổng hợp của một số lượng lớn người dùng khác.

Hướng dẫn này cho biết cách lấy dữ liệu từ người dùng ứng dụng của bạn bằng Firebase Analytics, xây dựng mô hình học máy cho các đề xuất từ ​​dữ liệu đó, sau đó sử dụng mô hình đó trong ứng dụng Android để chạy suy luận và nhận các đề xuất. Đặc biệt, các đề xuất của chúng tôi sẽ gợi ý những bộ phim mà người dùng có nhiều khả năng sẽ xem nhất dựa trên danh sách các bộ phim mà người dùng đã thích trước đó.

Những gì bạn sẽ học

  • Tích hợp Firebase Analytics vào một ứng dụng android để thu thập dữ liệu hành vi của người dùng
  • Xuất dữ liệu đó sang Google Big Query
  • Xử lý trước dữ liệu và đào tạo mô hình đề xuất TF Lite
  • Triển khai mô hình TF Lite cho Firebase ML và truy cập mô hình đó từ ứng dụng của bạn
  • Chạy trên thiết bị suy luận bằng cách sử dụng mô hình để đề xuất các đề xuất cho người dùng

Những gì bạn cần

  • Phiên bản Android Studio 3.4+.
  • Mã mẫu.
  • Thiết bị thử nghiệm chạy Android 2.3+ và các dịch vụ của Google Play 9.8 trở lên hoặc Trình giả lập với các dịch vụ của Google Play 9.8 trở lên
  • Nếu sử dụng thiết bị, cáp kết nối.

Bạn sẽ sử dụng hướng dẫn này như thế nào?

Chỉ đọc qua Đọc nó và hoàn thành các bài tập

Đánh giá trải nghiệm của bạn với việc xây dựng ứng dụng Android như thế nào?

Người mới Trung gian Thành thạo

2. Lấy mã mẫu

Sao chép kho lưu trữ GitHub từ dòng lệnh.

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

3. Nhập ứng dụng khởi động

Từ Android Studio, chọn thư mục codelab-recommendations-android ( android_studio_folder.png ) từ tải xuống mã mẫu ( Tệp > Mở > ... / codelab-Recommend-android / start).

Bây giờ bạn sẽ mở dự án bắt đầu trong Android Studio.

4. Tạo dự án bảng điều khiển Firebase

Tạo một dự án mới

  1. Đi tới bảng điều khiển Firebase .
  2. Chọn Thêm dự án (hoặc Tạo dự án nếu đó là dự án đầu tiên).
  3. Chọn hoặc nhập tên Dự án và nhấp vào Tiếp tục .
  4. Đảm bảo rằng "Bật Google Analytics cho dự án này" được bật.
  5. Làm theo các bước thiết lập còn lại trong bảng điều khiển Firebase, sau đó nhấp vào Tạo dự án (hoặc Thêm Firebase, nếu bạn đang sử dụng một dự án hiện có của Google).

5. Thêm Firebase

  1. Từ màn hình tổng quan của dự án mới của bạn, hãy nhấp vào biểu tượng Android để khởi chạy quy trình thiết lập.
  2. Nhập tên gói của codelab: com.google.firebase.codelabs.recommendations
  3. Chọn Đăng ký ứng dụng .

Thêm tệp google-services.json vào ứng dụng của bạn

Sau khi thêm tên gói và chọn Đăng ký, hãy nhấp vào Tải xuống google-services.json để tải xuống tệp cấu hình Firebase Android của bạn, sau đó sao chép tệp google-services.json vào thư mục app trong dự án của bạn. Sau khi tệp được tải xuống, bạn có thể Bỏ qua các bước tiếp theo được hiển thị trong bảng điều khiển (chúng đã được thực hiện cho bạn trong dự án xây dựng-android-start).

Thêm plugin google-services vào ứng dụng của bạn

Plugin google-services sử dụng tệp google-services.json để định cấu hình ứng dụng của bạn để sử dụng Firebase. Các dòng sau đã được thêm vào tệp build.gradle trong dự án (kiểm tra để xác nhận):

app / build.grade

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

build.grade

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

Đồng bộ hóa dự án của bạn với các tệp gradle

Để đảm bảo rằng tất cả các phần phụ thuộc đều có sẵn cho ứng dụng của bạn, bạn nên đồng bộ hóa dự án của mình với các tệp gradle tại thời điểm này. Chọn Tệp> Đồng bộ hóa Dự án với Tệp Gradle từ thanh công cụ Android Studio.

6. Chạy ứng dụng khởi động

Bây giờ bạn đã nhập dự án vào Android Studio và định cấu hình plugin google-services với tệp JSON của mình, bạn đã sẵn sàng để chạy ứng dụng lần đầu tiên. Kết nối thiết bị Android của bạn và nhấp vào Chạy ( thi hành.png ) trong thanh công cụ Android Studio.

Ứng dụng sẽ khởi chạy trên thiết bị của bạn. Tại thời điểm này, bạn có thể thấy một ứng dụng đang hoạt động hiển thị tab có danh sách phim, tab Phim đã thích và tab Đề xuất. Bạn có thể nhấp vào một bộ phim trong danh sách các bộ phim để thêm nó vào danh sách yêu thích của bạn. Sau khi hoàn thành các bước còn lại của bảng mã, chúng tôi sẽ có thể tạo các đề xuất phim trong tab Đề xuất.

7. Thêm Firebase Analytics vào ứng dụng

Trong bước này, bạn sẽ thêm Firebase Analytics vào ứng dụng để ghi dữ liệu hành vi của người dùng (trong trường hợp này là phim người dùng thích). Dữ liệu này sẽ được sử dụng tổng hợp trong các bước trong tương lai để đào tạo mô hình khuyến nghị.

Thêm phần phụ thuộc vào Firebase Analytics

Phần phụ thuộc sau là cần thiết để thêm Firebase Analytics vào ứng dụng của bạn. Nó phải đã được bao gồm trong tệp app / build.gradle (xác minh).

app / build.grade

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

Thiết lập Firebase Analytics trong ứng dụng

LikedMoviesViewModel chứa các chức năng để lưu trữ các bộ phim mà người dùng thích. Mỗi khi người dùng thích một bộ phim mới, chúng tôi cũng muốn gửi một sự kiện nhật ký phân tích để ghi lại lượt thích đó.

Thêm chức năng onMovieLiked với đoạn mã bên dưới để đăng ký sự kiện phân tích khi người dùng bấm thích một bộ phim.

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

Thêm trường và chức năng sau để ghi sự kiện Analytics khi phim được thêm vào danh sách Đã thích của người dùng.

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. Kiểm tra tích hợp Analytics của bạn

Trong bước này, chúng tôi sẽ tạo các sự kiện Analytics trong ứng dụng và xác minh rằng chúng đang được gửi đến Bảng điều khiển Firebase.

Bật ghi nhật ký gỡ lỗi Analytics

Firebase Analytics được thiết kế để tối đa hóa thời lượng pin của người dùng và sẽ thực hiện hàng loạt các sự kiện trên thiết bị và chỉ thỉnh thoảng gửi chúng đến Firebase. Đối với mục đích gỡ lỗi, chúng tôi có thể vô hiệu hóa hành vi này để xem các sự kiện khi chúng được đăng nhập trong thời gian thực bằng cách chạy lệnh sau trong trình bao.

Phần cuối

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

Xác minh các sự kiện Analytics được tạo

  1. Trong Android studio, hãy mở cửa sổ Logcat để kiểm tra việc ghi nhật ký từ ứng dụng của bạn.
  2. Đặt bộ lọc Logcat thành chuỗi "Sự kiện ghi nhật ký".
  3. Xác minh rằng các sự kiện Analytics "select_item" được phát ra mỗi khi bạn thích một bộ phim trong ứng dụng.

Tại thời điểm này, bạn đã tích hợp thành công Firebase Analytics vào ứng dụng của mình. Khi người dùng sử dụng ứng dụng của bạn và thích phim, lượt thích của họ sẽ được ghi lại tổng hợp. Chúng tôi sẽ sử dụng dữ liệu tổng hợp này trong phần còn lại của bảng mã này để đào tạo mô hình đề xuất của chúng tôi. Sau đây là bước tùy chọn để xem các sự kiện Analytics tương tự mà bạn đã thấy trong Logcat cũng truyền trực tiếp vào bảng điều khiển Firebase. Vui lòng bỏ qua trang tiếp theo.

Tùy chọn: Xác nhận các sự kiện Analytics trong Bảng điều khiển Firebase

  1. Đi tới bảng điều khiển Firebase .
  2. Chọn DebugView trong Analytics
  3. Trong Android Studio, chọn Run để khởi chạy ứng dụng và thêm một số phim vào danh sách Đã thích của bạn.
  4. Trong DebugView của bảng điều khiển Firebase, hãy xác minh rằng các sự kiện này đang được ghi lại khi bạn thêm phim vào ứng dụng.

9. Xuất dữ liệu Analytics sang Truy vấn lớn

Big Query là một sản phẩm của Google Cloud cho phép bạn kiểm tra và xử lý một lượng lớn dữ liệu. Trong bước này, bạn sẽ kết nối dự án Bảng điều khiển Firebase của mình với Truy vấn lớn để dữ liệu Analytics do ứng dụng của bạn tạo tự động được xuất sang Truy vấn lớn.

Bật tính năng xuất Truy vấn lớn

  1. Đi tới bảng điều khiển Firebase .
  2. Chọn biểu tượng bánh răng Cài đặt bên cạnh Tổng quan về dự án , sau đó chọn Cài đặt dự án
  3. Chọn tab Tích hợp .
  4. Chọn Liên kết (hoặc Quản lý ) bên trong khối BigQuery .
  5. Chọn Tiếp theo trong bước Giới thiệu về liên kết Firebase với BigQuery .
  6. Trong phần Định cấu hình tích hợp , hãy nhấp vào nút chuyển để cho phép gửi dữ liệu Google Analytics và chọn Liên kết tới BigQuery .

Giờ đây, bạn đã bật dự án bảng điều khiển Firebase của mình để tự động gửi dữ liệu sự kiện Firebase Analytics tới Big Query. Điều này xảy ra tự động mà không cần bất kỳ tương tác nào khác, tuy nhiên, lần xuất đầu tiên tạo tập dữ liệu phân tích trong BigQuery có thể không xảy ra trong 24 giờ. Sau khi tập dữ liệu được tạo, Firebase liên tục xuất các sự kiện Analytics mới sang Truy vấn lớn vào bảng trong ngày và nhóm các sự kiện từ những ngày trước vào bảng sự kiện.

Đào tạo một mô hình khuyến nghị đòi hỏi rất nhiều dữ liệu. Vì chúng tôi chưa có ứng dụng tạo lượng lớn dữ liệu, nên trong bước tiếp theo, chúng tôi sẽ nhập tập dữ liệu mẫu vào BigQuery để sử dụng cho phần còn lại của hướng dẫn này.

10. Sử dụng BigQuery để lấy dữ liệu đào tạo mô hình

Bây giờ chúng tôi đã kết nối Bảng điều khiển Firebase của mình để xuất sang BigQuery, dữ liệu sự kiện phân tích ứng dụng của chúng tôi sẽ tự động hiển thị trong bảng điều khiển BigQuery sau một thời gian. Để nhận một số dữ liệu ban đầu cho mục đích của hướng dẫn này, trong bước này, chúng tôi sẽ nhập tập dữ liệu mẫu hiện có vào bảng điều khiển BigQuery của bạn để sử dụng nhằm đào tạo mô hình đề xuất của chúng tôi.

Nhập tập dữ liệu mẫu vào BigQuery

  1. Truy cập trang tổng quan BigQuery trong bảng điều khiển đám mây của Google.
  2. Chọn tên dự án của bạn trong menu.
  3. Chọn tên dự án của bạn ở cuối điều hướng bên trái BigQuery để xem chi tiết.
  4. Chọn Tạo tập dữ liệu để mở bảng tạo tập dữ liệu.
  5. Nhập 'firebase_recommendations_dataset' cho ID tập dữ liệu và chọn Tạo tập dữ liệu .
  6. Tập dữ liệu mới sẽ hiển thị trong menu bên trái dưới tên dự án. Nhấp vào nó.
  7. Chọn Tạo bảng để mở bảng tạo bảng.
  8. Đối với Tạo bảng , hãy chọn 'Google Cloud Storage'.
  9. Trong trường Chọn tệp từ nhóm GCS , nhập 'gs: //firebase-recommendations/recommendations-test/formatted_data_filtered.txt'.
  10. Chọn 'JSONL' trong trình đơn Định dạng tệp thả xuống.
  11. Nhập 'suggest_table' cho tên Table .
  12. Chọn hộp bên dưới Giản đồ> Tự động phát hiện> Giản đồ và tham số đầu vào
  13. Chọn Tạo bảng

Khám phá tập dữ liệu mẫu

Tại thời điểm này, bạn có thể tùy chọn khám phá lược đồ và xem trước tập dữ liệu này.

  1. Chọn bộ dữ liệu-khuyến nghị-firebase trong menu bên trái để mở rộng các bảng mà nó chứa.
  2. Chọn bảng đề xuất- bảng để xem lược đồ bảng.
  3. Chọn Xem trước để xem dữ liệu sự kiện Analytics thực tế mà bảng này chứa.

Tạo thông tin đăng nhập tài khoản dịch vụ

Bây giờ, chúng tôi sẽ tạo thông tin đăng nhập tài khoản dịch vụ trong dự án bảng điều khiển Google Cloud của chúng tôi mà chúng tôi có thể sử dụng trong môi trường Colab ở bước sau để truy cập và tải dữ liệu BigQuery của chúng tôi.

  1. Đảm bảo rằng thanh toán được bật cho dự án Google Cloud của bạn.
  2. Bật các API API lưu trữ BigQuery và BigQuery. < bấm vào đây >
  3. Chuyển đến trang Tạo khóa tài khoản dịch vụ .
  4. Từ danh sách Tài khoản dịch vụ , hãy chọn Tài khoản dịch vụ mới .
  5. Trong trường Tên tài khoản dịch vụ , hãy nhập tên.
  6. Từ danh sách Vai trò , chọn Dự án > Chủ sở hữu .
  7. Nhấp vào Tạo . Tệp JSON chứa các nội dung tải xuống chính của bạn vào máy tính của bạn.

Trong bước tiếp theo, chúng tôi sẽ sử dụng Google Colab để xử lý trước dữ liệu này và đào tạo mô hình đề xuất của chúng tôi.

11. Dữ liệu tiền xử lý và mô hình khuyến nghị đào tạo

Trong bước này, chúng tôi sẽ sử dụng sổ ghi chép Colab để thực hiện các bước sau:

  1. nhập dữ liệu BigQuery vào sổ ghi chép Colab
  2. xử lý trước dữ liệu để chuẩn bị cho việc đào tạo mô hình
  3. đào tạo mô hình đề xuất trên dữ liệu phân tích
  4. xuất mô hình dưới dạng mô hình TF lite
  5. triển khai mô hình cho Bảng điều khiển Firebase để chúng tôi có thể sử dụng mô hình đó trong ứng dụng của mình

Trước khi chúng tôi khởi chạy sổ tay đào tạo Colab, trước tiên chúng tôi sẽ bật API quản lý mô hình Firebase để Colab có thể triển khai mô hình đã đào tạo vào bảng điều khiển Firebase của chúng tôi.

Bật API quản lý mô hình Firebase

Tạo một thùng để lưu trữ các mô hình ML của bạn

Trong Bảng điều khiển Firebase của bạn, hãy chuyển đến Bộ nhớ và nhấp vào Bắt đầu. fbbea78f0eb3dc9f.png

Làm theo lời thoại để thiết lập nhóm của bạn.

19517c0d6d2aa14d.png

Bật API Firebase ML

Truy cập trang API ML của Firebase trên Google Cloud Console và nhấp vào Bật.

Sử dụng sổ ghi chép Colab để đào tạo và triển khai mô hình

Mở sổ ghi chép colab bằng liên kết sau và hoàn thành các bước bên trong. Sau khi hoàn thành các bước trong sổ ghi chép Colab, bạn sẽ có tệp mô hình TF lite được triển khai tới bảng điều khiển Firebase mà chúng tôi có thể đồng bộ hóa với ứng dụng của mình.

Mở trong Colab

12. Tải xuống mô hình trong ứng dụng của bạn

Trong bước này, chúng tôi sẽ sửa đổi ứng dụng của mình để tải xuống mô hình mà chúng tôi vừa đào tạo từ Firebase Machine Learning.

Thêm phần phụ thuộc Firebase ML

Phần phụ thuộc sau là cần thiết để sử dụng các mô hình Học máy của Firebase trong ứng dụng của bạn. Nó đã được thêm vào (xác minh).

app / build.grade

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

Tải xuống mô hình bằng API Trình quản lý mô hình Firebase

Sao chép mã bên dưới vào RecommendationClient.kt để thiết lập các điều kiện mà quá trình tải xuống mô hình xảy ra và tạo tác vụ tải xuống để đồng bộ hóa mô hình từ xa với ứng dụng của chúng tôi.

RecommendationClient.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. Tích hợp mô hình đề xuất Tensorflow Lite trong ứng dụng của bạn

Thời gian chạy Tensorflow Lite sẽ cho phép bạn sử dụng mô hình của mình trong ứng dụng để tạo các đề xuất. Trong bước trước, chúng tôi đã khởi tạo trình thông dịch TFlite với tệp mô hình mà chúng tôi đã tải xuống. Trong bước này, trước tiên, chúng tôi sẽ tải một từ điển và các nhãn đi kèm với mô hình của chúng tôi trong bước suy luận, sau đó chúng tôi sẽ thêm xử lý trước để tạo đầu vào cho mô hình của chúng tôi và xử lý hậu kỳ, nơi chúng tôi sẽ trích xuất kết quả từ suy luận của chúng tôi .

Tải từ điển và nhãn

Các nhãn được sử dụng để tạo các đề xuất ứng viên theo mô hình đề xuất được liệt kê trong tệp sorted_movie_vocab.json trong thư mục res / asset. Sao chép mã sau để tải các ứng cử viên này.

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

Thực hiện tiền xử lý

Trong bước tiền xử lý, chúng tôi thay đổi hình thức của dữ liệu đầu vào để phù hợp với những gì mô hình của chúng tôi mong đợi. Ở đây, chúng tôi đệm độ dài đầu vào bằng một giá trị giữ chỗ nếu chúng tôi chưa tạo được nhiều lượt thích của người dùng. Sao chép mã bên dưới:

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


Chạy trình thông dịch để tạo các đề xuất

Ở đây, chúng tôi sử dụng mô hình mà chúng tôi đã tải xuống ở bước trước để chạy suy luận trên đầu vào được xử lý trước của chúng tôi. Chúng tôi đặt loại đầu vào và đầu ra cho mô hình của mình và chạy suy luận để đưa ra các đề xuất phim của chúng tôi. Sao chép mã sau vào ứng dụng của bạn.

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



Thực hiện xử lý hậu kỳ

Cuối cùng, trong bước này, chúng tôi xử lý hậu kỳ đầu ra từ mô hình của mình, chọn kết quả có độ tin cậy cao nhất và loại bỏ các giá trị chứa (phim mà người dùng đã thích). Sao chép mã sau vào ứng dụng của bạn.

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


Kiểm tra ứng dụng của bạn!

Chạy lại ứng dụng của bạn. Khi bạn chọn một vài bộ phim, nó sẽ tự động tải xuống mô hình mới và bắt đầu tạo các đề xuất!

14. Xin chúc mừng!

Bạn đã xây dựng một tính năng đề xuất vào ứng dụng của mình bằng cách sử dụng TensorFlow Lite và Firebase. Lưu ý rằng các kỹ thuật và quy trình hiển thị trong bảng mã này có thể được khái quát hóa và được sử dụng để phục vụ các loại khuyến nghị khác.

Những gì chúng tôi đã đề cập

  • Firebase ML
  • Phân tích Firebase
  • Xuất các sự kiện phân tích sang BigQuery
  • Sự kiện phân tích tiền xử lý
  • Đề xuất đào tạo Mô hình TensorFlow
  • Xuất mô hình và triển khai sang Bảng điều khiển Firebase
  • Cung cấp các đề xuất phim trong một ứng dụng

Bước tiếp theo

  • Triển khai các đề xuất ML của Firebase trong ứng dụng của bạn.

Tìm hiểu thêm

Có một câu hỏi?

Báo cáo sự cố