TensorFlow Lite এবং Firebase - iOS Codelab-এর সাথে আপনার অ্যাপে সুপারিশ যোগ করুন

1. ওভারভিউ

TensorFlow Lite এবং Firebase কোডল্যাবের সাথে সুপারিশগুলিতে স্বাগতম। এই কোডল্যাবে আপনি আপনার অ্যাপে একটি সুপারিশ মডেল স্থাপন করতে TensorFlow Lite এবং Firebase ব্যবহার করতে শিখবেন। এই কোডল্যাবটি এই টেনসরফ্লো লাইট উদাহরণের উপর ভিত্তি করে তৈরি করা হয়েছে।

প্রস্তাবনাগুলি অ্যাপগুলিকে প্রতিটি ব্যবহারকারীর জন্য সবচেয়ে প্রাসঙ্গিক সামগ্রী বুদ্ধিমত্তার সাথে পরিবেশন করতে মেশিন লার্নিং ব্যবহার করার অনুমতি দেয়। তারা ব্যবহারকারীর অতীতের আচরণ বিবেচনা করে অ্যাপের বিষয়বস্তুর পরামর্শ দেওয়ার জন্য যা ব্যবহারকারীরা ভবিষ্যতে ইন্টারঅ্যাক্ট করতে পছন্দ করতে পারে এমন একটি মডেল ব্যবহার করে যা অন্যান্য ব্যবহারকারীদের একটি বিশাল সংখ্যার সামগ্রিক আচরণের উপর প্রশিক্ষিত।

এই টিউটোরিয়ালটি দেখায় কিভাবে Firebase অ্যানালিটিক্সের মাধ্যমে আপনার অ্যাপের ব্যবহারকারীদের কাছ থেকে ডেটা প্রাপ্ত করতে হয়, সেই ডেটা থেকে সুপারিশের জন্য একটি মেশিন লার্নিং মডেল তৈরি করতে হয় এবং তারপরে অনুমান চালানোর জন্য এবং সুপারিশগুলি পেতে iOS অ্যাপে সেই মডেলটি ব্যবহার করতে হয়। বিশেষত, আমাদের সুপারিশগুলি পরামর্শ দেবে যে ব্যবহারকারীরা আগে পছন্দ করেছেন এমন চলচ্চিত্রগুলির তালিকার ভিত্তিতে কোন ব্যবহারকারী সম্ভবত কোন চলচ্চিত্রগুলি দেখবেন৷

আপনি কি শিখবেন

  • ব্যবহারকারীর আচরণের ডেটা সংগ্রহ করতে একটি অ্যান্ড্রয়েড অ্যাপে Firebase অ্যানালিটিক্সকে একীভূত করুন
  • Google Big Query-এ সেই ডেটা এক্সপোর্ট করুন
  • ডেটা প্রি-প্রসেস করুন এবং একটি TF Lite সুপারিশ মডেল প্রশিক্ষণ দিন
  • TF Lite মডেলটিকে Firebase ML-এ স্থাপন করুন এবং আপনার অ্যাপ থেকে এটি অ্যাক্সেস করুন
  • ব্যবহারকারীদের সুপারিশ করার জন্য মডেল ব্যবহার করে ডিভাইস ইনফারেন্সে চালান

আপনি কি প্রয়োজন হবে

  • Xcode 11 (বা উচ্চতর)
  • CocoaPods 1.9.1 (বা উচ্চতর)

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

আইওএস অ্যাপ তৈরি করার ক্ষেত্রে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. ফায়ারবেস কনসোল প্রকল্প তৈরি করুন

প্রকল্পে Firebase যোগ করুন

  1. ফায়ারবেস কনসোলে যান।
  2. নতুন প্রজেক্ট তৈরি করুন নির্বাচন করুন এবং আপনার প্রকল্পের নাম দিন "Firebase ML iOS Codelab"।

3. নমুনা প্রকল্প পান

কোডটি ডাউনলোড করুন

নমুনা প্রকল্প ক্লোন করে শুরু করুন এবং প্রকল্প ডিরেক্টরিতে pod update চালান:

git clone https://github.com/FirebaseExtended/codelab-contentrecommendation-ios.git
cd codelab-contentrecommendation-ios/start
pod install --repo-update

আপনার যদি গিট ইনস্টল না থাকে তবে আপনি নমুনা প্রকল্পটি এর GitHub পৃষ্ঠা থেকে বা এই লিঙ্কে ক্লিক করে ডাউনলোড করতে পারেন। একবার আপনি প্রকল্পটি ডাউনলোড করার পরে, এটিকে Xcode-এ চালান এবং এটি কীভাবে কাজ করে তার অনুভূতি পেতে সুপারিশের সাথে খেলুন।

Firebase সেট আপ করুন

একটি নতুন ফায়ারবেস প্রকল্প তৈরি করতে ডকুমেন্টেশন অনুসরণ করুন। একবার আপনি আপনার প্রকল্পটি পেয়ে গেলে, Firebase কনসোল থেকে আপনার প্রকল্পের GoogleService-Info.plist ফাইলটি ডাউনলোড করুন এবং এটিকে Xcode প্রকল্পের মূলে টেনে আনুন৷

4a923d5c7ae0d8f3.png

আপনার Podfile এ Firebase যোগ করুন এবং পড ইনস্টল চালান।

pod 'FirebaseAnalytics'
pod 'FirebaseMLModelDownloader', '9.3.0-beta'
pod 'TensorFlowLiteSwift'

আপনার AppDelegate এর didFinishLaunchingWithOptions পদ্ধতিতে, ফাইলের শীর্ষে Firebase আমদানি করুন

import FirebaseCore

এবং Firebase কনফিগার করতে একটি কল যোগ করুন।

FirebaseApp.configure()

অ্যাপটি সঠিকভাবে কনফিগার করা হয়েছে এবং লঞ্চের সময় ক্র্যাশ না হয় তা নিশ্চিত করতে প্রকল্পটি আবার চালান।

  1. নিশ্চিত করুন যে "এই প্রকল্পের জন্য Google Analytics সক্ষম করুন" সক্ষম করা আছে৷
  2. Firebase কনসোলে অবশিষ্ট সেটআপ পদক্ষেপগুলি অনুসরণ করুন, তারপরে প্রজেক্ট তৈরি করুন (বা যদি আপনি একটি বিদ্যমান Google প্রকল্প ব্যবহার করেন তবে Firebase যোগ করুন) ক্লিক করুন।

4. অ্যাপে Firebase Analytics যোগ করুন

এই ধাপে, আপনি ব্যবহারকারীর আচরণের ডেটা লগ করার জন্য অ্যাপে Firebase অ্যানালিটিক্স যোগ করবেন (এই ক্ষেত্রে, ব্যবহারকারী কোন সিনেমা পছন্দ করেন)। সুপারিশ মডেল প্রশিক্ষণের জন্য ভবিষ্যতের ধাপে এই ডেটা সমষ্টিগতভাবে ব্যবহার করা হবে।

অ্যাপে 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. আপনার অ্যানালিটিক্স ইন্টিগ্রেশন পরীক্ষা করুন

এই ধাপে, আমরা অ্যাপে অ্যানালিটিক্স ইভেন্ট তৈরি করব এবং যাচাই করব যে সেগুলি Firebase কনসোলে পাঠানো হচ্ছে।

Analytics ডিবাগ লগিং সক্ষম করুন

সাধারণত, আপনার অ্যাপ দ্বারা লগ করা ইভেন্টগুলি প্রায় এক ঘন্টার মধ্যে একসাথে ব্যাচ করা হয় এবং একসাথে আপলোড করা হয়। এই পদ্ধতিটি শেষ ব্যবহারকারীদের ডিভাইসে ব্যাটারি সংরক্ষণ করে এবং নেটওয়ার্ক ডেটা ব্যবহার হ্রাস করে। যাইহোক, আপনার অ্যানালিটিক্স ইমপ্লিমেন্টেশন যাচাই করার উদ্দেশ্যে (এবং, ডিবাগভিউ রিপোর্টে আপনার অ্যানালিটিক্স দেখার জন্য), আপনি ন্যূনতম বিলম্বের সাথে ইভেন্টগুলি আপলোড করতে আপনার ডেভেলপমেন্ট ডিভাইসে ডিবাগ মোড চালু করতে পারেন।

আপনার ডেভেলপমেন্ট ডিভাইসে অ্যানালিটিক্স ডিবাগ মোড সক্ষম করতে, Xcode-এ নিম্নলিখিত কমান্ড লাইন আর্গুমেন্ট উল্লেখ করুন:

-FIRDebugEnabled

এই মুহুর্তে, আপনি সফলভাবে আপনার অ্যাপে Firebase অ্যানালিটিক্স একত্রিত করেছেন। ব্যবহারকারীরা আপনার অ্যাপ ব্যবহার করে এবং সিনেমা পছন্দ করে, তাদের লাইকগুলি মোট লগ ইন করা হবে। আমরা আমাদের সুপারিশ মডেল প্রশিক্ষণের জন্য এই কোডল্যাবের বাকি অংশে এই সমষ্টিগত ডেটা ব্যবহার করব। আপনি Logcat-এ যে অ্যানালিটিক্স ইভেন্টগুলি দেখেছেন তা Firebase কনসোলে স্ট্রিম করার জন্য নিম্নলিখিতটি একটি ঐচ্ছিক পদক্ষেপ। নির্দ্বিধায় পরের পৃষ্ঠায় চলে যান।

ঐচ্ছিক: Firebase কনসোলে Analytics ইভেন্ট নিশ্চিত করুন

  1. ফায়ারবেস কনসোলে যান।
  2. বিশ্লেষণের অধীনে DebugView নির্বাচন করুন
  3. Xcode-এ, অ্যাপ চালু করতে Run নির্বাচন করুন এবং আপনার পছন্দের তালিকায় কিছু সিনেমা যোগ করুন।
  4. Firebase কনসোলের DebugView-এ, আপনি অ্যাপে সিনেমা যোগ করার সাথে সাথে এই ইভেন্টগুলি লগ করা হচ্ছে কিনা তা যাচাই করুন।

6. বিগ কোয়েরিতে বিশ্লেষণ ডেটা রপ্তানি করুন

Big Query হল একটি Google ক্লাউড পণ্য যা আপনাকে প্রচুর পরিমাণে ডেটা পরীক্ষা এবং প্রক্রিয়া করার অনুমতি দেয়। এই ধাপে, আপনি আপনার ফায়ারবেস কনসোল প্রজেক্টকে Big Query-এর সাথে সংযুক্ত করবেন যাতে আপনার অ্যাপের দ্বারা জেনারেট করা Analytics ডেটা স্বয়ংক্রিয়ভাবে Big Query-এ রপ্তানি হয়।

Big Query রপ্তানি সক্ষম করুন

  1. ফায়ারবেস কনসোলে যান।
  2. প্রজেক্ট ওভারভিউ এর পাশে সেটিংস গিয়ার আইকন নির্বাচন করুন এবং তারপরে প্রজেক্ট সেটিংস নির্বাচন করুন
  3. ইন্টিগ্রেশন ট্যাবটি নির্বাচন করুন।
  4. BigQuery ব্লকের মধ্যে লিঙ্ক (বা পরিচালনা করুন ) নির্বাচন করুন।
  5. BigQuery ধাপে Firebase লিঙ্ক করার বিষয়ে পরবর্তী নির্বাচন করুন।
  6. কনফিগার ইন্টিগ্রেশন বিভাগের অধীনে, Google Analytics ডেটা পাঠানো সক্ষম করতে সুইচটিতে ক্লিক করুন এবং BigQuery-এর লিঙ্ক নির্বাচন করুন।

আপনি এখন আপনার Firebase কনসোল প্রকল্প সক্ষম করেছেন যাতে স্বয়ংক্রিয়ভাবে Firebase Analytics ইভেন্ট ডেটা Big Query-এ পাঠানো হয়। এটি আর কোনও ইন্টারঅ্যাকশন ছাড়াই স্বয়ংক্রিয়ভাবে ঘটে, তবে, BigQuery-এ অ্যানালিটিক্স ডেটাসেট তৈরি করে এমন প্রথম এক্সপোর্ট 24 ঘণ্টার জন্য নাও হতে পারে। ডেটাসেট তৈরি হওয়ার পর, Firebase ক্রমাগত নতুন অ্যানালিটিক্স ইভেন্টগুলিকে ইন্ট্রাডে টেবিলে Big Query-এ রপ্তানি করে এবং ইভেন্ট টেবিলে বিগত দিনের ইভেন্টগুলিকে গোষ্ঠীভুক্ত করে।

একটি সুপারিশ মডেল প্রশিক্ষণের জন্য প্রচুর ডেটা প্রয়োজন। যেহেতু আমাদের কাছে ইতিমধ্যেই প্রচুর পরিমাণে ডেটা জেনারেট করার মতো কোনো অ্যাপ নেই, তাই পরবর্তী ধাপে আমরা এই টিউটোরিয়ালের বাকি অংশ ব্যবহারের জন্য BigQuery-এ একটি নমুনা ডেটাসেট আমদানি করব।

7. মডেল প্রশিক্ষণ ডেটা পেতে BigQuery ব্যবহার করুন

এখন যেহেতু আমরা BigQuery এ রপ্তানি করার জন্য আমাদের Firebase কনসোল সংযুক্ত করেছি, আমাদের অ্যাপ বিশ্লেষণ ইভেন্ট ডেটা কিছু সময়ের পরে BigQuery কনসোলে স্বয়ংক্রিয়ভাবে প্রদর্শিত হবে। এই টিউটোরিয়ালের উদ্দেশ্যে কিছু প্রাথমিক ডেটা পেতে, এই ধাপে আমরা আমাদের সুপারিশ মডেল প্রশিক্ষণের জন্য ব্যবহার করার জন্য আপনার BigQuery কনসোলে একটি বিদ্যমান নমুনা ডেটাসেট আমদানি করব।

BigQuery-এ নমুনা ডেটাসেট আমদানি করুন

  1. Google ক্লাউড কনসোলে BigQuery ড্যাশবোর্ডে যান।
  2. মেনুতে আপনার প্রকল্পের নাম নির্বাচন করুন।
  3. বিশদ বিবরণ দেখতে BigQuery বাঁদিকের নেভিগেশনের নীচে আপনার প্রকল্পের নাম নির্বাচন করুন।
  4. ডেটাসেট তৈরির প্যানেল খুলতে ডেটাসেট তৈরি করুন নির্বাচন করুন।
  5. ডেটাসেট আইডির জন্য 'firebase_recommendations_dataset' লিখুন এবং ডেটাসেট তৈরি করুন নির্বাচন করুন।
  6. নতুন ডেটাসেটটি প্রকল্পের নামের অধীনে বাম মেনুতে প্রদর্শিত হবে। এটি ক্লিক করুন.
  7. টেবিল তৈরির প্যানেল খুলতে টেবিল তৈরি করুন নির্বাচন করুন।
  8. 'গুগল ক্লাউড স্টোরেজ' নির্বাচন থেকে টেবিল তৈরি করার জন্য।
  9. GCS বাকেট ফিল্ড থেকে ফাইল নির্বাচন করুন , 'gs://firebase-recommendations/recommendations-test/formatted_data_filtered.txt' লিখুন।
  10. ফাইল ফরম্যাট ড্রপ ডাউনে 'JSONL' নির্বাচন করুন।
  11. টেবিল নামের জন্য 'recommendations_table' লিখুন।
  12. স্কিমা > অটো ডিটেক্ট > স্কিমা এবং ইনপুট প্যারামিটারের অধীনে বক্সটি চেক করুন
  13. টেবিল তৈরি করুন নির্বাচন করুন

নমুনা ডেটাসেট অন্বেষণ

এই মুহুর্তে, আপনি ঐচ্ছিকভাবে স্কিমা অন্বেষণ করতে পারেন এবং এই ডেটাসেটের পূর্বরূপ দেখতে পারেন।

  1. এতে থাকা সারণীগুলিকে প্রসারিত করতে বাম মেনুতে ফায়ারবেস-সুপারিশ-ডেটাসেট নির্বাচন করুন৷
  2. টেবিল স্কিমা দেখতে সুপারিশ-সারণী টেবিল নির্বাচন করুন।
  3. এই সারণীতে থাকা প্রকৃত Analytics ইভেন্ট ডেটা দেখতে পূর্বরূপ নির্বাচন করুন।

পরিষেবা অ্যাকাউন্টের শংসাপত্র তৈরি করুন

এখন, আমরা আমাদের Google ক্লাউড কনসোল প্রজেক্টে পরিষেবা অ্যাকাউন্টের শংসাপত্র তৈরি করব যা আমরা আমাদের BigQuery ডেটা অ্যাক্সেস এবং লোড করার জন্য নিম্নলিখিত ধাপে Colab পরিবেশে ব্যবহার করতে পারি।

  1. আপনার Google ক্লাউড প্রকল্পের জন্য বিলিং সক্ষম করা আছে তা নিশ্চিত করুন৷
  2. BigQuery এবং BigQuery স্টোরেজ API এপিআই সক্ষম করুন। < এখানে ক্লিক করুন >
  3. সার্ভিস অ্যাকাউন্ট কী পৃষ্ঠাতে যান।
  4. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  5. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  6. ভূমিকা তালিকা থেকে, প্রকল্প > মালিক নির্বাচন করুন।
  7. তৈরি করুন ক্লিক করুন। একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

পরবর্তী ধাপে, আমরা এই ডেটা প্রিপ্রসেস করতে এবং আমাদের সুপারিশের মডেলকে প্রশিক্ষণ দিতে Google Colab ব্যবহার করব।

8. প্রিপ্রসেস ডেটা এবং ট্রেন সুপারিশ মডেল

এই ধাপে, আমরা নিম্নলিখিত ধাপগুলি সম্পাদন করার জন্য একটি Colab নোটবুক ব্যবহার করব:

  1. Colab নোটবুকে BigQuery ডেটা আমদানি করুন
  2. মডেল প্রশিক্ষণের জন্য প্রস্তুত করার জন্য ডেটা প্রিপ্রসেস করুন
  3. বিশ্লেষণী তথ্যের উপর সুপারিশ মডেল প্রশিক্ষণ
  4. একটি TF লাইট মডেল হিসাবে মডেল রপ্তানি করুন
  5. মডেলটিকে ফায়ারবেস কনসোলে স্থাপন করুন যাতে আমরা এটিকে আমাদের অ্যাপে ব্যবহার করতে পারি

Colab ট্রেনিং নোটবুক লঞ্চ করার আগে, আমরা প্রথমে Firebase মডেল ম্যানেজমেন্ট API চালু করব যাতে Colab আমাদের Firebase কনসোলে প্রশিক্ষিত মডেল স্থাপন করতে পারে।

Firebase মডেল ব্যবস্থাপনা API সক্ষম করুন

আপনার ML মডেলগুলি সংরক্ষণ করার জন্য একটি বালতি তৈরি করুন৷

আপনার ফায়ারবেস কনসোলে, স্টোরেজে যান এবং শুরু করুন ক্লিক করুন। fbbea78f0eb3dc9f.png

আপনার বালতি সেট আপ পেতে ডায়ালগ অনুসরণ করুন.

19517c0d6d2aa14d.png

Firebase ML API সক্ষম করুন৷

Google ক্লাউড কনসোলে Firebase ML API পৃষ্ঠাতে যান এবং Enable এ ক্লিক করুন।

মডেলকে প্রশিক্ষণ ও স্থাপন করতে Colab নোটবুক ব্যবহার করুন

নিম্নলিখিত লিঙ্কটি ব্যবহার করে কোলাব নোটবুকটি খুলুন এবং এর মধ্যে পদক্ষেপগুলি সম্পূর্ণ করুন৷ Colab নোটবুকের ধাপগুলি শেষ করার পরে, আপনার কাছে একটি TF লাইট মডেল ফাইল Firebase কনসোলে স্থাপন করা হবে যা আমরা আমাদের অ্যাপে সিঙ্ক করতে পারি।

Colab-এ খুলুন

9. আপনার অ্যাপে মডেলটি ডাউনলোড করুন

এই ধাপে, আমরা Firebase Machine Learning থেকে এইমাত্র প্রশিক্ষিত মডেলটি ডাউনলোড করতে আমাদের অ্যাপটি পরিবর্তন করব।

Firebase ML নির্ভরতা যোগ করুন

আপনার অ্যাপে ফায়ারবেস মেশিন লার্নিং মডেলগুলি ব্যবহার করার জন্য নিম্নলিখিত নির্ভরতা প্রয়োজন৷ এটি ইতিমধ্যে যোগ করা উচিত (যাচাই)।

পডফাইল

import FirebaseCore
import FirebaseMLModelDownloader

Firebase মডেল ম্যানেজার 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]))
    }
  }

আপনার অ্যাপ পরীক্ষা করুন!

আপনার অ্যাপ পুনরায় চালান। আপনি কয়েকটি চলচ্চিত্র নির্বাচন করার সাথে সাথে এটি স্বয়ংক্রিয়ভাবে নতুন মডেল ডাউনলোড করবে এবং সুপারিশ তৈরি করা শুরু করবে!

11. অভিনন্দন!

আপনি TensorFlow Lite এবং Firebase ব্যবহার করে আপনার অ্যাপে একটি সুপারিশ বৈশিষ্ট্য তৈরি করেছেন। মনে রাখবেন যে এই কোডল্যাবে দেখানো কৌশল এবং পাইপলাইনগুলি সাধারণীকরণ করা যেতে পারে এবং অন্যান্য ধরণের সুপারিশগুলিও পরিবেশন করতে ব্যবহার করা যেতে পারে।

আমরা কভার করেছি কি

  • ফায়ারবেস এমএল
  • ফায়ারবেস বিশ্লেষণ
  • BigQuery-এ অ্যানালিটিক্স ইভেন্ট এক্সপোর্ট করুন
  • প্রিপ্রসেস বিশ্লেষণ ঘটনা
  • ট্রেনের সুপারিশ TensorFlow মডেল
  • মডেল এক্সপোর্ট করুন এবং ফায়ারবেস কনসোলে স্থাপন করুন
  • একটি অ্যাপে চলচ্চিত্রের সুপারিশ পরিবেশন করুন

পরবর্তী পদক্ষেপ

  • আপনার অ্যাপে Firebase ML সুপারিশ বাস্তবায়ন করুন।

আরও জানুন

একটি প্রশ্ন আছে?

রিপোর্ট সমস্যা