1. ภาพรวม
ยินดีต้อนรับสู่ Codelab การแนะนำด้วย TensorFlow Lite และ Firebase ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ TensorFlow Lite และ Firebase เพื่อติดตั้งใช้งานโมเดลคำแนะนำในแอป Codelab นี้อิงตามตัวอย่าง TensorFlow Lite นี้
คำแนะนำช่วยให้แอปใช้แมชชีนเลิร์นนิงเพื่อแสดงเนื้อหาที่เกี่ยวข้องมากที่สุดต่อผู้ใช้แต่ละรายได้อย่างชาญฉลาด โดยจะพิจารณาพฤติกรรมของผู้ใช้ในอดีตเพื่อแนะนำเนื้อหาของแอปที่ผู้ใช้อาจต้องการโต้ตอบในอนาคตโดยใช้โมเดลที่ฝึกจากพฤติกรรมรวมของผู้ใช้รายอื่นๆ จำนวนมาก
บทแนะนำนี้แสดงวิธีรับข้อมูลจากผู้ใช้แอปด้วย Firebase Analytics สร้างโมเดลแมชชีนเลิร์นนิงสําหรับคําแนะนําจากข้อมูลนั้น แล้วใช้โมเดลดังกล่าวในแอป iOS เพื่อเรียกใช้การอนุมานและรับคําแนะนํา โดยเฉพาะอย่างยิ่ง คำแนะนำของเราจะแนะนำภาพยนตร์ที่ผู้ใช้น่าจะรับชมมากที่สุดจากรายการภาพยนตร์ที่ผู้ใช้เคยกดชอบ
สิ่งที่คุณจะได้เรียนรู้
- ผสานรวม Firebase Analytics เข้ากับแอป Android เพื่อรวบรวมข้อมูลพฤติกรรมของผู้ใช้
- ส่งออกข้อมูลดังกล่าวไปยัง Google BigQuery
- ประมวลผลข้อมูลล่วงหน้าและฝึกโมเดลคำแนะนำ TF Lite
- ติดตั้งใช้งานโมเดล TF Lite ใน Firebase ML และเข้าถึงจากแอป
- เรียกใช้การอนุมานในอุปกรณ์โดยใช้โมเดลเพื่อแนะนำเนื้อหาแก่ผู้ใช้
สิ่งที่ต้องมี
- Xcode 11 (ขึ้นไป)
- CocoaPods 1.9.1 (หรือสูงกว่า)
คุณจะใช้บทแนะนำนี้อย่างไร
คุณจะให้คะแนนประสบการณ์ในการสร้างแอป iOS เท่าใด
2. สร้างโปรเจ็กต์คอนโซล Firebase
เพิ่ม Firebase ลงในโปรเจ็กต์
- ไปที่คอนโซล Firebase
- เลือกสร้างโปรเจ็กต์ใหม่ แล้วตั้งชื่อโปรเจ็กต์ว่า "Codelab 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 ใหม่ เมื่อมีโปรเจ็กต์แล้ว ให้ดาวน์โหลดไฟล์ GoogleService-Info.plist
ของโปรเจ็กต์จากคอนโซล Firebase แล้วลากไปยังรูทของโปรเจ็กต์ Xcode
เพิ่ม Firebase ไปยัง Podfile แล้วเรียกใช้ pod install
pod 'FirebaseAnalytics' pod 'FirebaseMLModelDownloader', '9.3.0-beta' pod 'TensorFlowLiteSwift'
ในเมธอดของ AppDelegate
didFinishLaunchingWithOptions
ให้นำเข้า Firebase ที่ด้านบนของไฟล์
import FirebaseCore
และเพิ่มการเรียกเพื่อกำหนดค่า Firebase
FirebaseApp.configure()
เรียกใช้โปรเจ็กต์อีกครั้งเพื่อให้แน่ใจว่าได้กำหนดค่าแอปอย่างถูกต้องและแอปไม่ขัดข้องเมื่อเปิดตัว
- ตรวจสอบว่าได้เปิดใช้ "เปิดใช้ Google Analytics สำหรับโปรเจ็กต์นี้" แล้ว
- ทำตามขั้นตอนการตั้งค่าที่เหลือในคอนโซล Firebase แล้วคลิกสร้างโปรเจ็กต์ (หรือเพิ่ม Firebase หากคุณใช้โปรเจ็กต์ Google ที่มีอยู่)
4. เพิ่ม Firebase Analytics ลงในแอป
ในขั้นตอนนี้ คุณจะเพิ่ม Firebase Analytics ลงในแอปเพื่อบันทึกข้อมูลพฤติกรรมของผู้ใช้ (ในกรณีนี้คือภาพยนตร์ที่ผู้ใช้ชอบ) ระบบจะใช้ข้อมูลนี้แบบรวมในขั้นตอนต่อๆ ไปเพื่อฝึกโมเดลคำแนะนำ
ตั้งค่า Firebase Analytics ในแอป
LikedMoviesViewModel มีฟังก์ชันสำหรับจัดเก็บภาพยนตร์ที่ผู้ใช้ชื่นชอบ ทุกครั้งที่ผู้ใช้กดชอบภาพยนตร์ใหม่ เราต้องการส่งเหตุการณ์บันทึกการวิเคราะห์เพื่อบันทึกการกดชอบนั้นด้วย
เพิ่มโค้ดด้านล่างเพื่อลงทะเบียนเหตุการณ์วิเคราะห์เมื่อผู้ใช้คลิกชอบภาพยนตร์
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
โดยทั่วไปแล้ว ระบบจะจัดกลุ่มเหตุการณ์ที่แอปบันทึกไว้ในช่วงเวลาประมาณ 1 ชั่วโมงและอัปโหลดพร้อมกัน แนวทางนี้ช่วยประหยัดแบตเตอรี่ในอุปกรณ์ของผู้ใช้ปลายทางและลดการใช้ข้อมูลเครือข่าย อย่างไรก็ตาม เพื่อวัตถุประสงค์ในการตรวจสอบการติดตั้งใช้งาน Analytics (และเพื่อดูข้อมูลวิเคราะห์ในรายงาน DebugView) คุณสามารถเปิดใช้โหมดแก้ไขข้อบกพร่องในอุปกรณ์ที่ใช้พัฒนาซอฟต์แวร์เพื่ออัปโหลดเหตุการณ์โดยมีความล่าช้าน้อยที่สุด
ในการเปิดใช้โหมดแก้ไขข้อบกพร่องของ Analytics ในอุปกรณ์การพัฒนา ให้ระบุอาร์กิวเมนต์บรรทัดคำสั่งต่อไปนี้ใน Xcode
-FIRDebugEnabled
ตอนนี้คุณได้ผสานรวม Firebase Analytics เข้ากับแอปเรียบร้อยแล้ว เมื่อผู้ใช้ใช้แอปและกดชอบภาพยนตร์ ระบบจะบันทึกการกดชอบของผู้ใช้แบบรวม เราจะใช้ข้อมูลรวมนี้ในส่วนที่เหลือของโค้ดแล็บนี้เพื่อฝึกโมเดลคำแนะนำ ขั้นตอนต่อไปนี้เป็นขั้นตอนที่ไม่บังคับเพื่อให้เห็นเหตุการณ์ Analytics เดียวกันกับที่เห็นใน Logcat ซึ่งจะสตรีมไปยังคอนโซล Firebase ด้วย คุณข้ามไปยังหน้าถัดไปได้เลย
ไม่บังคับ: ยืนยันเหตุการณ์ Analytics ในคอนโซล Firebase
- ไปที่คอนโซล Firebase
- เลือก DebugView ในส่วน Analytics
- ใน Xcode ให้เลือก Run เพื่อเปิดแอปและเพิ่มภาพยนตร์บางเรื่องลงในรายการที่ชอบ
- ใน DebugView ของคอนโซล Firebase ให้ตรวจสอบว่าระบบบันทึกเหตุการณ์เหล่านี้เมื่อคุณเพิ่มภาพยนตร์ในแอป
6. ส่งออกข้อมูล Analytics ไปยัง BigQuery
BigQuery เป็นผลิตภัณฑ์ของ Google Cloud ที่ช่วยให้คุณตรวจสอบและประมวลผลข้อมูลจำนวนมากได้ ในขั้นตอนนี้ คุณจะเชื่อมต่อโปรเจ็กต์คอนโซล Firebase กับ BigQuery เพื่อให้ระบบส่งออกข้อมูล Analytics ที่แอปสร้างขึ้นไปยัง BigQuery โดยอัตโนมัติ
เปิดใช้การส่งออก BigQuery
- ไปที่คอนโซล Firebase
- เลือกไอคอนรูปเฟืองการตั้งค่าข้างภาพรวมของโปรเจ็กต์ แล้วเลือกการตั้งค่าโปรเจ็กต์
- เลือกแท็บการผสานรวม
- เลือกลิงก์ (หรือจัดการ) ในบล็อก BigQuery
- เลือกถัดไปในขั้นตอนเกี่ยวกับการลิงก์ Firebase กับ BigQuery
- ในส่วนกําหนดค่าการผสานรวม ให้คลิกสวิตช์เพื่อเปิดใช้การส่งข้อมูล Google Analytics แล้วเลือกลิงก์กับ BigQuery
ตอนนี้คุณได้เปิดใช้โปรเจ็กต์คอนโซล Firebase เพื่อส่งข้อมูลเหตุการณ์ Firebase Analytics ไปยัง BigQuery โดยอัตโนมัติแล้ว ซึ่งจะเกิดขึ้นโดยอัตโนมัติโดยไม่ต้องมีการโต้ตอบเพิ่มเติม อย่างไรก็ตาม การส่งออกครั้งแรกที่สร้างชุดข้อมูลวิเคราะห์ใน BigQuery อาจใช้เวลาถึง 24 ชั่วโมง หลังจากสร้างชุดข้อมูลแล้ว Firebase จะส่งออกเหตุการณ์ Analytics ใหม่ไปยัง BigQuery อย่างต่อเนื่องลงในตารางระหว่างวัน และจัดกลุ่มเหตุการณ์จากวันก่อนๆ ในตารางเหตุการณ์
การฝึกโมเดลคำแนะนำต้องใช้ข้อมูลจำนวนมาก เนื่องจากเรายังไม่มีแอปที่สร้างข้อมูลจำนวนมาก ในขั้นตอนถัดไป เราจะนำเข้าชุดข้อมูลตัวอย่างไปยัง BigQuery เพื่อใช้ในส่วนที่เหลือของบทแนะนำนี้
7. ใช้ BigQuery เพื่อรับข้อมูลการฝึกโมเดล
ตอนนี้เราได้เชื่อมต่อคอนโซล Firebase เพื่อส่งออกไปยัง BigQuery แล้ว ข้อมูลเหตุการณ์วิเคราะห์แอปจะปรากฏในคอนโซล BigQuery โดยอัตโนมัติหลังจากผ่านไปสักระยะ ในขั้นตอนนี้ เราจะนําเข้าชุดข้อมูลตัวอย่างที่มีอยู่ไปยังคอนโซล BigQuery เพื่อใช้ฝึกโมเดลคําแนะนํา เพื่อให้ได้ข้อมูลเริ่มต้นสําหรับวัตถุประสงค์ของบทแนะนำนี้
นำเข้าชุดข้อมูลตัวอย่างไปยัง BigQuery
- ไปที่แดชบอร์ด BigQuery ในคอนโซล Google Cloud
- เลือกชื่อโปรเจ็กต์ในเมนู
- เลือกชื่อโปรเจ็กต์ที่ด้านล่างของการนำทางด้านซ้ายของ BigQuery เพื่อดูรายละเอียด
- เลือกสร้างชุดข้อมูลเพื่อเปิดแผงการสร้างชุดข้อมูล
- ป้อน "firebase_recommendations_dataset" สำหรับรหัสชุดข้อมูล แล้วเลือกสร้างชุดข้อมูล
- ชุดข้อมูลใหม่จะปรากฏในเมนูด้านซ้ายใต้ชื่อโปรเจ็กต์ ให้คลิกไอคอนนี้
- เลือกสร้างตารางเพื่อเปิดแผงการสร้างตาราง
- สำหรับสร้างตารางจาก ให้เลือก "Google Cloud Storage"
- ในช่องเลือกไฟล์จากที่เก็บข้อมูล GCS ให้ป้อน "gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt"
- เลือก "JSONL" ในเมนูแบบเลื่อนลงรูปแบบไฟล์
- ป้อน "recommendations_table" สำหรับชื่อตาราง
- เลือกช่องใต้สคีมา > ตรวจหาอัตโนมัติ > สคีมาและพารามิเตอร์อินพุต
- เลือกสร้างตาราง
สำรวจชุดข้อมูลตัวอย่าง
ตอนนี้คุณสามารถเลือกสำรวจสคีมาและดูตัวอย่างชุดข้อมูลนี้ได้
- เลือก firebase-recommendations-dataset ในเมนูด้านซ้ายเพื่อขยายตารางที่มีอยู่
- เลือกตาราง recommendations-table เพื่อดูสคีมาของตาราง
- เลือกแสดงตัวอย่างเพื่อดูข้อมูลเหตุการณ์ Analytics จริงที่ตารางนี้มี
สร้างข้อมูลเข้าสู่ระบบบัญชีบริการ
ตอนนี้เราจะสร้างข้อมูลเข้าสู่ระบบของบัญชีบริการในโปรเจ็กต์ Google Cloud Console ที่เราใช้ได้ในสภาพแวดล้อม Colab ในขั้นตอนต่อไปเพื่อเข้าถึงและโหลดข้อมูล BigQuery
- ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud แล้ว
- เปิดใช้ BigQuery API และ BigQuery Storage API < คลิกที่นี่>
- ไปที่หน้าสร้างคีย์บัญชีบริการ
- จากรายการบัญชีบริการ ให้เลือกบัญชีบริการใหม่
- ป้อนชื่อในช่องชื่อบัญชีบริการ
- จากรายการบทบาท ให้เลือกโปรเจ็กต์ > เจ้าของ
- คลิกสร้าง ระบบจะดาวน์โหลดไฟล์ JSON ที่มีคีย์ลงในคอมพิวเตอร์
ในขั้นตอนถัดไป เราจะใช้ Google Colab เพื่อประมวลผลข้อมูลนี้ล่วงหน้าและฝึกโมเดลคำแนะนำ
8. ประมวลผลข้อมูลล่วงหน้าและฝึกโมเดลคำแนะนำ
ในขั้นตอนนี้ เราจะใช้สมุดบันทึก Colab เพื่อทำตามขั้นตอนต่อไปนี้
- นำเข้าข้อมูล BigQuery ไปยังสมุดบันทึก Colab
- ประมวลผลข้อมูลล่วงหน้าเพื่อเตรียมข้อมูลสำหรับการฝึกโมเดล
- ฝึกโมเดลคำแนะนำในข้อมูล Analytics
- ส่งออกโมเดลเป็นโมเดล TF Lite
- Deploy โมเดลไปยังคอนโซล Firebase เพื่อให้เราใช้โมเดลในแอปได้
ก่อนที่จะเปิดตัว Notebook การฝึก Colab เราจะเปิดใช้ Firebase Model Management API ก่อนเพื่อให้ Colab สามารถติดตั้งใช้งานโมเดลที่ฝึกแล้วในคอนโซล Firebase ของเราได้
เปิดใช้ Firebase Model Management API
สร้างที่เก็บข้อมูลเพื่อจัดเก็บโมเดล ML
ในคอนโซล Firebase ให้ไปที่ Storage แล้วคลิก "เริ่มต้นใช้งาน"
ทำตามกล่องโต้ตอบเพื่อตั้งค่าที่เก็บข้อมูล
เปิดใช้ Firebase ML API
ไปที่หน้า Firebase ML API ใน Google Cloud Console แล้วคลิกเปิดใช้
ใช้ Colab Notebook เพื่อฝึกและทำให้โมเดลใช้งานได้
เปิดสมุดบันทึก Colab โดยใช้ลิงก์ต่อไปนี้และทำตามขั้นตอนภายใน หลังจากทำตามขั้นตอนในสมุดบันทึก Colab เสร็จแล้ว คุณจะมีไฟล์โมเดล TF Lite ที่ติดตั้งใช้งานในคอนโซล Firebase ซึ่งเราสามารถซิงค์ลงในแอปได้
เปิดใน Colab
9. ดาวน์โหลดโมเดลในแอป
ในขั้นตอนนี้ เราจะแก้ไขแอปเพื่อดาวน์โหลดโมเดลที่เราเพิ่งฝึกจากแมชชีนเลิร์นนิงใน Firebase
เพิ่มทรัพยากร Dependency ของ Firebase ML
คุณต้องมี Dependency ต่อไปนี้เพื่อใช้โมเดลแมชชีนเลิร์นนิงของ Firebase ในแอป โดยควรเพิ่มไว้แล้ว (ตรวจสอบ)
Podfile
import FirebaseCore
import FirebaseMLModelDownloader
ดาวน์โหลดโมเดลด้วย Firebase Model Manager API
คัดลอกโค้ดด้านล่างลงใน 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_vocab.json ในโฟลเดอร์ชิ้นงาน คัดลอกโค้ดต่อไปนี้เพื่อโหลดตัวเลือกเหล่านี้
RecommendationsViewController.swift
func getMovies() -> [MovieItem] {
let barController = self.tabBarController as! TabBarController
return barController.movies
}
ใช้การประมวลผลล่วงหน้า
ในขั้นตอนการประมวลผลล่วงหน้า เราจะเปลี่ยนรูปแบบของข้อมูลอินพุตให้ตรงกับที่โมเดลของเราคาดหวัง ในที่นี้ เราจะเพิ่มความยาวของอินพุตด้วยค่าตัวยึดตำแหน่งหากยังไม่ได้สร้างการกดถูกใจของผู้ใช้จำนวนมาก คัดลอกโค้ดด้านล่าง
RecommendationsViewController.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
}
เรียกใช้โปรแกรมแปลเพื่อสร้างคำแนะนำ
ในที่นี้ เราใช้โมเดลที่ดาวน์โหลดในขั้นตอนก่อนหน้าเพื่อเรียกใช้การอนุมานในอินพุตที่ประมวลผลล่วงหน้า เราตั้งค่าประเภทอินพุตและเอาต์พุตสำหรับโมเดลของเรา และเรียกใช้การอนุมานเพื่อสร้างภาพยนตร์ที่แนะนำ คัดลอกโค้ดต่อไปนี้ลงในแอป
RecommendationsViewController.swift
import TensorFlowLite
RecommendationsViewController.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)")
}
}
ใช้การประมวลผลภายหลัง
สุดท้าย ในขั้นตอนนี้ เราจะประมวลผลเอาต์พุตจากโมเดลของเราภายหลัง โดยเลือกผลลัพธ์ที่มีความมั่นใจสูงสุดและนำค่าที่รวมอยู่ (ภาพยนตร์ที่ผู้ใช้กดชอบแล้ว) ออก คัดลอกโค้ดต่อไปนี้ลงในแอป
RecommendationsViewController.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]))
}
}
ทดสอบแอป
เรียกใช้แอปอีกครั้ง เมื่อคุณเลือกภาพยนตร์ 2-3 เรื่อง ระบบจะดาวน์โหลดโมเดลใหม่โดยอัตโนมัติและเริ่มสร้างคำแนะนำ
11. ยินดีด้วย
คุณได้สร้างฟีเจอร์คำแนะนำลงในแอปโดยใช้ TensorFlow Lite และ Firebase โปรดทราบว่าเทคนิคและไปป์ไลน์ที่แสดงใน Codelab นี้สามารถนำไปใช้และใช้เพื่อแสดงคำแนะนำประเภทอื่นๆ ได้เช่นกัน
สิ่งที่เราได้พูดถึงไปแล้ว
- Firebase ML
- Firebase Analytics
- ส่งออกเหตุการณ์การวิเคราะห์ไปยัง BigQuery
- ประมวลผลเหตุการณ์ Analytics ล่วงหน้า
- ฝึกโมเดล TensorFlow สำหรับสินค้าแนะนำ
- ส่งออกโมเดลและทําให้ใช้งานได้ในคอนโซล Firebase
- แสดงภาพยนตร์ที่แนะนำในแอป
ขั้นตอนถัดไป
- ติดตั้งใช้งานคำแนะนำของ Firebase ML ในแอป
ดูข้อมูลเพิ่มเติม
หากมีคำถาม
รายงานปัญหา