সাহায্য Kaggle উপর TensorFlow সঙ্গে গ্রেট বেরিয়ার রিফ রক্ষা চ্যালেঞ্জ যোগদান

TensorFlow Lite মডেল মেকারের সাথে টেক্সট শ্রেণীবিভাগ

TensorFlow.org এ দেখুন গুগল কোলাবে চালান GitHub এ উৎস দেখুন নোটবুক ডাউনলোড করুন

TensorFlow লাইট মডেল মেকার গ্রন্থাগার অভিযোজিত এবং বিশেষ ইনপুট ডেটা করার জন্য একটি TensorFlow মডেল রূপান্তর গেলে কখন অন-ডিভাইস এমএল অ্যাপ্লিকেশনের জন্য এই মডেল মোতায়েন প্রক্রিয়া সহজসাধ্য।

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

পূর্বশর্ত

প্রয়োজনীয় প্যাকেজ ইনস্টল করুন

এই উদাহরণে চালাতে, থেকে মডেল মেকার প্যাকেজ সহ, প্রয়োজনীয় প্যাকেজগুলি ইনস্টল GitHub রেপো

pip install -q tflite-model-maker

প্রয়োজনীয় প্যাকেজ আমদানি করুন।

import numpy as np
import os

from tflite_model_maker import model_spec
from tflite_model_maker import text_classifier
from tflite_model_maker.config import ExportFormat
from tflite_model_maker.text_classifier import AverageWordVecSpec
from tflite_model_maker.text_classifier import DataLoader

import tensorflow as tf
assert tf.__version__.startswith('2')
tf.get_logger().setLevel('ERROR')
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/pkg_resources/__init__.py:119: PkgResourcesDeprecationWarning: 0.18ubuntu0.18.04.1 is an invalid version and will not be supported in a future release
  PkgResourcesDeprecationWarning,
/tmpfs/src/tf_docs_env/lib/python3.7/site-packages/numba/core/errors.py:168: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9
  warnings.warn(msg)

নমুনা প্রশিক্ষণ তথ্য ডাউনলোড করুন।

এই টিউটোরিয়াল, আমরা ব্যবহার করবে প্রথম পাতা-2 (স্ট্যানফোর্ড ভাবপ্রবণতা Treebank) যা কাজগুলো এক আঠালো বেঞ্চমার্ক। এতে প্রশিক্ষণের জন্য 67,349 মুভি রিভিউ এবং পরীক্ষার জন্য 872 মুভি রিভিউ রয়েছে। ডেটাসেটের দুটি শ্রেণী রয়েছে: ইতিবাচক এবং নেতিবাচক চলচ্চিত্র পর্যালোচনা।

data_dir = tf.keras.utils.get_file(
      fname='SST-2.zip',
      origin='https://dl.fbaipublicfiles.com/glue/data/SST-2.zip',
      extract=True)
data_dir = os.path.join(os.path.dirname(data_dir), 'SST-2')
Downloading data from https://dl.fbaipublicfiles.com/glue/data/SST-2.zip
7446528/7439277 [==============================] - 0s 0us/step
7454720/7439277 [==============================] - 0s 0us/step

এসএসটি -২ ডেটাসেট টিএসভি ফরম্যাটে সংরক্ষণ করা হয়। TSV এবং CSV মধ্যে একমাত্র পার্থক্য TSV একটি ট্যাব ব্যবহার করে \t একটি কমা পরিবর্তে তার বিভেদক চরিত্রেও , CSV বিন্যাসে।

এখানে প্রশিক্ষণ ডেটাসেটের প্রথম 5 লাইন। লেবেল = 0 মানে নেতিবাচক, লেবেল = 1 মানে ইতিবাচক।

বাক্য লেবেল
পিতামাতার ইউনিট থেকে নতুন নিtionsসরণ লুকান 0
কোন বুদ্ধি নেই, শুধুমাত্র পরিশ্রমী gags 0
যে তার চরিত্রগুলিকে ভালবাসে এবং মানুষের প্রকৃতি সম্পর্কে বরং সুন্দর কিছু যোগাযোগ করে
সর্বত্র একই থাকার জন্য সম্পূর্ণ সন্তুষ্ট থাকে 0
সবচেয়ে খারাপ প্রতিশোধের উপর চলচ্চিত্র নির্মাতারা ড্রেজ করতে পারে 0

এর পরে, আমরা পান্ডাস dataframe মধ্যে ডেটা সেটটি লোড বর্তমান ট্যাগ নাম (পরিবর্তন হবে 0 এবং 1 আরো পাঠযোগ্য বেশী (আপনি) negative এবং positive ) এবং তাদের মডেল প্রশিক্ষণের জন্য ব্যবহার করুন।

import pandas as pd

def replace_label(original_file, new_file):
  # Load the original file to pandas. We need to specify the separator as
  # '\t' as the training data is stored in TSV format
  df = pd.read_csv(original_file, sep='\t')

  # Define how we want to change the label name
  label_map = {0: 'negative', 1: 'positive'}

  # Excute the label change
  df.replace({'label': label_map}, inplace=True)

  # Write the updated dataset to a new file
  df.to_csv(new_file)

# Replace the label name for both the training and test dataset. Then write the
# updated CSV dataset to the current folder.
replace_label(os.path.join(os.path.join(data_dir, 'train.tsv')), 'train.csv')
replace_label(os.path.join(os.path.join(data_dir, 'dev.tsv')), 'dev.csv')

দ্রুত শুরু

একটি পাঠ্য শ্রেণীবিভাগ মডেল প্রশিক্ষণ পাঁচটি ধাপ আছে:

ধাপ 1. একটি টেক্সট শ্রেণীবিভাগ মডেল আর্কিটেকচার চয়ন করুন।

এখানে আমরা গড় শব্দ এম্বেডিং মডেল আর্কিটেকচার ব্যবহার করি, যা শালীন নির্ভুলতার সাথে একটি ছোট এবং দ্রুত মডেল তৈরি করবে।

spec = model_spec.get('average_word_vec')

মডেল মেকার যেমন হিসাবে অন্যান্য মডেল আর্কিটেকচারের সমর্থন বার্ট । আপনি অন্যান্য স্থাপত্য সম্পর্কে জানতে আগ্রহী, দেখতে টেক্সট ক্লাসিফায়ার জন্য একটি মডেল স্থাপত্য চয়ন করুন বিভাগটি দেখুন।

পদক্ষেপ 2. লোড প্রশিক্ষণ ও পরীক্ষা ডেটা, তারপর একটি নির্দিষ্ট অনুযায়ী তাদের preprocess model_spec

মডেল মেকার CSV ফরম্যাটে ইনপুট ডেটা নিতে পারে। আমরা আগে তৈরি করা মানব-পাঠযোগ্য লেবেল নামের সাথে প্রশিক্ষণ এবং পরীক্ষার ডেটাসেটটি লোড করব।

প্রতিটি মডেল আর্কিটেকচারের জন্য একটি নির্দিষ্ট উপায়ে প্রক্রিয়া করার জন্য ইনপুট ডেটা প্রয়োজন। DataLoader থেকে প্রয়োজন পড়ে model_spec এবং স্বয়ংক্রিয়ভাবে প্রয়োজনীয় প্রাক-প্রক্রিয়াকরণ সঞ্চালন করে।

train_data = DataLoader.from_csv(
      filename='train.csv',
      text_column='sentence',
      label_column='label',
      model_spec=spec,
      is_training=True)
test_data = DataLoader.from_csv(
      filename='dev.csv',
      text_column='sentence',
      label_column='label',
      model_spec=spec,
      is_training=False)

ধাপ the. প্রশিক্ষণ তথ্য সহ TensorFlow মডেলকে প্রশিক্ষণ দিন।

গড় শব্দ এমবেডিং মডেল ব্যবহার batch_size = 32 ডিফল্টরূপে। অতএব আপনি দেখতে পাবেন যে প্রশিক্ষণ ডেটাসেটে 67,349 বাক্যগুলি অতিক্রম করতে 2104 টি পদক্ষেপ লাগে। আমরা মডেলটিকে 10 টি যুগের জন্য প্রশিক্ষণ দেব, যার অর্থ 10 বার প্রশিক্ষণ ডেটাসেটের মধ্য দিয়ে যাওয়া।

model = text_classifier.create(train_data, model_spec=spec, epochs=10)
Epoch 1/10
2104/2104 [==============================] - 7s 3ms/step - loss: 0.6777 - accuracy: 0.5657
Epoch 2/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.5666 - accuracy: 0.7200
Epoch 3/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.4484 - accuracy: 0.7955
Epoch 4/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3982 - accuracy: 0.8262
Epoch 5/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3735 - accuracy: 0.8387
Epoch 6/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3595 - accuracy: 0.8476
Epoch 7/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3476 - accuracy: 0.8541
Epoch 8/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3379 - accuracy: 0.8593
Epoch 9/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3329 - accuracy: 0.8628
Epoch 10/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3258 - accuracy: 0.8646

ধাপ 4. পরীক্ষার তথ্য দিয়ে মডেলটি মূল্যায়ন করুন।

প্রশিক্ষণ ডেটাসেটে বাক্যগুলি ব্যবহার করে পাঠ্য শ্রেণীবিভাগের মডেল প্রশিক্ষণের পর, আমরা পরীক্ষার ডেটাসেটে বাকী 2২ বাক্য ব্যবহার করে মূল্যায়ন করব যে মডেলটি নতুন ডেটার বিপরীতে কীভাবে কাজ করে যা আগে কখনও দেখেনি।

যেহেতু ডিফল্ট ব্যাচের সাইজ 32, তাই টেস্ট ডেটাসেটে 872 বাক্যের মধ্য দিয়ে যেতে 28 টি পদক্ষেপ নিতে হবে।

loss, acc = model.evaluate(test_data)
28/28 [==============================] - 0s 2ms/step - loss: 0.5149 - accuracy: 0.8268

ধাপ 5. একটি TensorFlow লাইট মডেল হিসাবে রপ্তানি।

আসুন আমরা টেক্সর শ্রেণীবিভাগ রপ্তানি করি যা আমরা TensorFlow Lite বিন্যাসে প্রশিক্ষণ দিয়েছি। কোন ফোল্ডারটি মডেল রপ্তানি করতে হবে তা আমরা নির্দিষ্ট করব। ডিফল্টরূপে, ফ্লোট টিএফলাইট মডেল গড় শব্দ এম্বেডিং মডেল আর্কিটেকচারের জন্য রপ্তানি করা হয়।

model.export(export_dir='average_word_vec')
2021-11-02 12:53:52.418162: W tensorflow/python/util/util.cc:348] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.
2021-11-02 12:53:52.887037: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format.
2021-11-02 12:53:52.887073: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency.

আপনি কোলাবের বাম সাইডবার ব্যবহার করে TensorFlow Lite মডেল ফাইলটি ডাউনলোড করতে পারেন। যান average_word_vec হিসাবে আমরা উল্লেখিত ফোল্ডারের export_dir উপর, উপরে পরামিতি ডান-ক্লিক model.tflite ফাইল এবং পছন্দ করে নিন Download আপনার স্থানীয় কম্পিউটারে এটি ডাউনলোড করুন।

এই মডেল একটি Android বা ব্যবহার করে একটি iOS অ্যাপ্লিকেশন একত্রিত করা যেতে পারে NLClassifier এপিআই এর TensorFlow লাইট টাস্ক লাইব্রেরী

দেখুন TFLite টেক্সট ক্লাসিফিকেশন নমুনা অ্যাপ্লিকেশন কিভাবে মডেল কাজ অ্যাপ্লিকেশন ব্যবহার করা হয় আরও বিশদের জন্য।

দ্রষ্টব্য 1: অ্যান্ড্রয়েড স্টুডিও মডেল বাইন্ডিং এখনও পাঠ্য শ্রেণীবিভাগ সমর্থন করে না তাই দয়া করে টেনসরফ্লো লাইট টাস্ক লাইব্রেরি ব্যবহার করুন।

নোট 2: একটি নেই model.json TFLite মডেলের একই ফোল্ডারে ফাইল। এটা তাদেরকে JSON উপস্থাপনা রয়েছে মেটাডেটা TensorFlow লাইট মডেল ভিতরে bundled। মডেল মেটাডাটা TFLite টাস্ক লাইব্রেরিকে জানতে সাহায্য করে যে মডেলটি কি করে এবং কিভাবে মডেলের প্রি-প্রসেস/পোস্ট-প্রসেস ডেটা। আপনি ডাউনলোড করতে প্রয়োজন হবে না model.json ফাইল হিসাবে এটি শুধুমাত্র তথ্য সংক্রান্ত উদ্দেশ্যে দেওয়া এবং এর বিষয়বস্তু TFLite ফাইল ভিতরে ইতিমধ্যে।

উল্লেখ্য 3: আপনি MobileBERT বা বার্ট-বেজ স্থাপত্য ব্যবহার করে একটি টেক্সট শ্রেণীবিন্যাস মডেল প্রশিক্ষণ থাকে, তাহলে আপনি ব্যবহার করতে হবে BertNLClassifier এপিআই এর পরিবর্তে একটি মোবাইল অ্যাপ্লিকেশন মধ্যে প্রশিক্ষিত মডেল সংহত করতে।

নিচের বিভাগগুলি আরও বিস্তারিত দেখানোর জন্য ধাপে ধাপে উদাহরণ দিয়ে চলে।

টেক্সট ক্লাসিফায়ারের জন্য একটি মডেল আর্কিটেকচার বেছে নিন

প্রতিটি model_spec বস্তুর টেক্সট ক্লাসিফায়ার একটি নির্দিষ্ট মডেল প্রতিনিধিত্ব করে। TensorFlow লাইট মডেল Maker বর্তমানে সমর্থন MobileBERT , গড় শব্দ embeddings এবং বার্ট-বেজ মডেল।

সমর্থিত মডেল Model_spec এর নাম মডেল বর্ণনা মডেল সাইজ
গড় শব্দ এম্বেডিং 'গড়_ওয়ার্ড_ভেক' RELU অ্যাক্টিভেশনের সাথে টেক্সট ওয়ার্ড এম্বেডিংয়ের গড়। <1 এমবি
মোবাইলবার্ট 'মোবাইলবার্ট_ক্লাসিফায়ার' 4.3x ছোট এবং 5.5x দ্রুত BERT-Base- এর তুলনায় প্রতিযোগিতামূলক ফলাফল অর্জন করার সময়, ডিভাইস-এর অ্যাপ্লিকেশনের জন্য উপযুক্ত। 25MB w/ পরিমাপ
100MB w/o পরিমাপ
BERT- বেস 'বার্ট_ক্লাসিফায়ার' স্ট্যান্ডার্ড BERT মডেল যা ব্যাপকভাবে NLP কাজে ব্যবহৃত হয়। 300 এমবি

দ্রুত শুরুতে, আমরা গড় শব্দ এম্বেডিং মডেল ব্যবহার করেছি। আসুন সুইচ MobileBERT উচ্চ মাত্রায় নির্ভুল সঙ্গে একটি মডেল প্রশিক্ষণের।

mb_spec = model_spec.get('mobilebert_classifier')

প্রশিক্ষণের তথ্য লোড করুন

আপনি এই টিউটোরিয়ালের মাধ্যমে কাজ করতে আপনার নিজস্ব ডেটাসেট আপলোড করতে পারেন। কোলাবে বাম সাইডবার ব্যবহার করে আপনার ডেটাসেট আপলোড করুন।

ফাইল আপলোড করুন

আপনি ক্লাউড আপনার ডেটা সেটটি আপলোড করতে না চান, তাহলে আপনি স্থানীয়ভাবে গ্রন্থাগার অনুসরণ করে চালাতে পারেন নির্দেশিকা

এটি সহজ রাখতে, আমরা আগে ডাউনলোড করা SST-2 ডেটাসেট পুনরায় ব্যবহার করব। আসুন ব্যবহার DataLoader.from_csv ডেটা লোড করতে পদ্ধতি।

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

train_data = DataLoader.from_csv(
      filename='train.csv',
      text_column='sentence',
      label_column='label',
      model_spec=mb_spec,
      is_training=True)
test_data = DataLoader.from_csv(
      filename='dev.csv',
      text_column='sentence',
      label_column='label',
      model_spec=mb_spec,
      is_training=False)

মডেল মেকার লাইব্রেরি সমর্থন from_folder() লোড ডেটাতে পদ্ধতি। এটি অনুমান করে যে একই শ্রেণীর পাঠ্য ডেটা একই সাবডিরেক্টরিতে এবং সাবফোল্ডারের নাম হল ক্লাসের নাম। প্রতিটি টেক্সট ফাইলে একটি মুভি রিভিউ নমুনা থাকে। class_labels প্যারামিটার ব্যবহার করা হয় যা সাবফোল্ডার নির্দিষ্ট করতে।

একটি TensorFlow মডেল প্রশিক্ষণ

প্রশিক্ষণ তথ্য ব্যবহার করে একটি পাঠ্য শ্রেণীবিভাগ মডেল প্রশিক্ষণ।

model = text_classifier.create(train_data, model_spec=mb_spec, epochs=3)
Epoch 1/3
1403/1403 [==============================] - 322s 193ms/step - loss: 0.3882 - test_accuracy: 0.8464
Epoch 2/3
1403/1403 [==============================] - 257s 183ms/step - loss: 0.1303 - test_accuracy: 0.9534
Epoch 3/3
1403/1403 [==============================] - 257s 183ms/step - loss: 0.0759 - test_accuracy: 0.9753

বিস্তারিত মডেল গঠন পরীক্ষা করুন।

model.summary()
Model: "model"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_word_ids (InputLayer)     [(None, 128)]        0                                            
__________________________________________________________________________________________________
input_mask (InputLayer)         [(None, 128)]        0                                            
__________________________________________________________________________________________________
input_type_ids (InputLayer)     [(None, 128)]        0                                            
__________________________________________________________________________________________________
hub_keras_layer_v1v2 (HubKerasL (None, 512)          24581888    input_word_ids[0][0]             
                                                                 input_mask[0][0]                 
                                                                 input_type_ids[0][0]             
__________________________________________________________________________________________________
dropout_1 (Dropout)             (None, 512)          0           hub_keras_layer_v1v2[0][0]       
__________________________________________________________________________________________________
output (Dense)                  (None, 2)            1026        dropout_1[0][0]                  
==================================================================================================
Total params: 24,582,914
Trainable params: 24,582,914
Non-trainable params: 0
__________________________________________________________________________________________________

মডেলটি মূল্যায়ন করুন

পরীক্ষার ডেটা ব্যবহার করে আমরা যে মডেলটি প্রশিক্ষণ দিয়েছি তা মূল্যায়ন করুন এবং ক্ষতি এবং নির্ভুলতার মান পরিমাপ করুন।

loss, acc = model.evaluate(test_data)
28/28 [==============================] - 7s 48ms/step - loss: 0.3859 - test_accuracy: 0.9071

একটি TensorFlow লাইট মডেল হিসাবে রপ্তানি করুন

সঙ্গে TensorFlow লাইট মডেল বিন্যাস প্রশিক্ষিত মডেল রূপান্তর করুন মেটাডেটা যাতে আপনি পরে একটি অন-ডিভাইস এমএল অ্যাপ্লিকেশনে ব্যবহার করতে পারেন। লেবেল ফাইল এবং ভোকাব ফাইল মেটাডেটাতে এম্বেড করা আছে। ডিফল্ট TFLite ফাইলের নাম হল model.tflite

অনেক অন-ডিভাইস এমএল অ্যাপ্লিকেশনে, মডেলের আকার একটি গুরুত্বপূর্ণ বিষয়। অতএব, এটি সুপারিশ করা হয় যে আপনি মডেলটিকে ছোট এবং সম্ভাব্য দ্রুত চালানোর জন্য কোয়ান্টাইজ প্রয়োগ করুন। ডিফল্ট পোস্ট ট্রেনিং কোয়ানটাইজেশন টেকনিক হল BERT এবং MobileBERT মডেলের জন্য ডায়নামিক রেঞ্জ কোয়ানটাইজেশন।

model.export(export_dir='mobilebert/')
2021-11-02 13:09:19.810703: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:351] Ignored output_format.
2021-11-02 13:09:19.810749: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:354] Ignored drop_control_dependency.
2021-11-02 13:09:19.810755: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:360] Ignored change_concat_input_ranges.

TensorFlow লাইট মডেল ফাইল ব্যবহার করে একটি মোবাইল অ্যাপ্লিকেশানে একত্রিত করা যেতে পারে BertNLClassifier এপিআই মধ্যে TensorFlow লাইট টাস্ক লাইব্রেরী । দয়া করে মনে রাখবেন এই থেকে ভিন্ন NLClassifier টেক্সট শ্রেণীবিন্যাস গড় শব্দ ভেক্টর মডেল আর্কিটেকচারের সঙ্গে প্রশিক্ষিত সংহত করার জন্য ব্যবহৃত API- টি।

রপ্তানি ফরম্যাটগুলি নিম্নলিখিতগুলির একটি বা একটি তালিকা হতে পারে:

ডিফল্টরূপে, এটি মডেল মেটাডেটা ধারণকারী শুধুমাত্র TensorFlow Lite মডেল ফাইল রপ্তানি করে। আপনি আরও ভাল পরীক্ষার জন্য মডেল সম্পর্কিত অন্যান্য ফাইল রপ্তানি করতে পারেন। উদাহরণস্বরূপ, নিম্নরূপ শুধুমাত্র লেবেল ফাইল এবং ভোকাব ফাইল রপ্তানি করুন:

model.export(export_dir='mobilebert/', export_format=[ExportFormat.LABEL, ExportFormat.VOCAB])

আপনার সাথে TFLite মডেল মূল্যায়ন করতে পারেন evaluate_tflite পদ্ধতি তার সঠিকতা পরিমাপ। প্রশিক্ষিত TensorFlow মডেলকে TFLite ফরম্যাটে রূপান্তর করা এবং কোয়ান্টাইজেশন প্রয়োগ করা তার সঠিকতাকে প্রভাবিত করতে পারে তাই স্থাপনার আগে TFLite মডেলের নির্ভুলতা মূল্যায়ন করার সুপারিশ করা হয়।

accuracy = model.evaluate_tflite('mobilebert/model.tflite', test_data)
print('TFLite model accuracy: ', accuracy)
TFLite model accuracy:  {'accuracy': 0.9002293577981652}

উন্নত ব্যবহার

create ফাংশন চালক ফাংশন যা মডেল মেকার গ্রন্থাগার ব্যবহারের মডেল তৈরি করা। model_spec পরামিতি মডেল স্পেসিফিকেশন সংজ্ঞায়িত করে। AverageWordVecSpec এবং BertClassifierSpec শ্রেণীর বর্তমানে সমর্থিত হবে। create নিম্নলিখিত পদক্ষেপগুলি ফাংশন গঠিত:

  1. অনুযায়ী টেক্সট ক্লাসিফায়ার জন্য মডেল তৈরি করে model_spec
  2. ক্লাসিফায়ার মডেল ট্রেন। ডিফল্ট সময়কাল এবং ডিফল্ট ব্যাচ আকার দ্বারা নির্ধারণ করা হয় default_training_epochs এবং default_batch_size মধ্যে ভেরিয়েবল model_spec অবজেক্ট।

এই বিভাগটি মডেল এবং প্রশিক্ষণ হাইপারপ্যারামিটার সমন্বয় করার মতো উন্নত ব্যবহারের বিষয়গুলি অন্তর্ভুক্ত করে।

মোবাইলবার্ট মডেল হাইপারপ্যারামিটার কাস্টমাইজ করুন

আপনি যে মডেল পরামিতিগুলি সামঞ্জস্য করতে পারেন তা হল:

  • seq_len : মডেল মধ্যে ফিড ক্রম দৈর্ঘ্য।
  • initializer_range : স্ট্যান্ডার্ড ডেভিয়েশন truncated_normal_initializer সব ওজন ম্যাট্রিক্স আরম্ভের জন্য।
  • trainable : যে কিনা তা নির্দিষ্ট প্রাক প্রশিক্ষণ স্তর trainable হয় বুলিয়ান।

প্রশিক্ষণ পাইপলাইন পরামিতিগুলি আপনি সামঞ্জস্য করতে পারেন:

  • model_dir : মডেল চেকপয়েন্ট ফাইলের অবস্থান। সেট না করা হলে, একটি অস্থায়ী ডিরেক্টরি ব্যবহার করা হবে।
  • dropout_rate : ঝরে পড়া হার।
  • learning_rate : আদম অপটিমাইজার জন্য প্রারম্ভিক শেখার হার।
  • tpu : নমনীয় ঠিকানা সাথে সংযোগ স্থাপনের জন্য।

উদাহরণস্বরূপ, আপনি সেট করতে পারেন seq_len=256 (ডিফল্ট 128) হয়। এটি মডেলটিকে দীর্ঘ পাঠ্য শ্রেণীবদ্ধ করার অনুমতি দেয়।

new_model_spec = model_spec.get('mobilebert_classifier')
new_model_spec.seq_len = 256

গড় শব্দ এম্বেডিং মডেল হাইপারপ্যারামিটার কাস্টমাইজ করুন

তোমার মত মডেল পরিকাঠামো নিয়ন্ত্রন করতে পারেন wordvec_dim এবং seq_len মধ্যে ভেরিয়েবল AverageWordVecSpec বর্গ।

উদাহরণস্বরূপ, যদি আপনি একটি বৃহত্তর মান মডেল শেখাতে পারেন wordvec_dim । মনে রাখবেন যে, যদি আপনি একটি নতুন গঠন করা উচিত নয় model_spec আপনি মডেল পরিবর্তন করুন।

new_model_spec = AverageWordVecSpec(wordvec_dim=32)

প্রি -প্রসেসড ডেটা পান।

new_train_data = DataLoader.from_csv(
      filename='train.csv',
      text_column='sentence',
      label_column='label',
      model_spec=new_model_spec,
      is_training=True)

নতুন মডেলের প্রশিক্ষণ দিন।

model = text_classifier.create(new_train_data, model_spec=new_model_spec)
Epoch 1/3
2104/2104 [==============================] - 8s 4ms/step - loss: 0.6545 - accuracy: 0.6055
Epoch 2/3
2104/2104 [==============================] - 6s 3ms/step - loss: 0.4822 - accuracy: 0.7712
Epoch 3/3
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3993 - accuracy: 0.8217

প্রশিক্ষণ হাইপারপ্যারামিটারগুলি সুর করুন

এছাড়াও আপনি সুর মতো প্রশিক্ষণ hyperparameters epochs এবং batch_size মডেলটির সঠিকতা প্রভাবিত। এই ক্ষেত্রে,

  • epochs : আরও সময়কাল ভাল সঠিকতা অর্জন করতে পারে, কিন্তু overfitting হতে পারে।
  • batch_size : নমুনার এক নম্বর প্রশিক্ষণ ধাপে ব্যবহার করতে।

উদাহরণস্বরূপ, আপনি আরও যুগের সাথে প্রশিক্ষণ দিতে পারেন।

model = text_classifier.create(new_train_data, model_spec=new_model_spec, epochs=20)
Epoch 1/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.6595 - accuracy: 0.5994
Epoch 2/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.4904 - accuracy: 0.7655
Epoch 3/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.4036 - accuracy: 0.8177
Epoch 4/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3690 - accuracy: 0.8392
Epoch 5/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3516 - accuracy: 0.8500
Epoch 6/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3391 - accuracy: 0.8569
Epoch 7/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3301 - accuracy: 0.8608
Epoch 8/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3237 - accuracy: 0.8654
Epoch 9/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3190 - accuracy: 0.8674
Epoch 10/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3151 - accuracy: 0.8703
Epoch 11/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3103 - accuracy: 0.8725
Epoch 12/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3074 - accuracy: 0.8737
Epoch 13/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3036 - accuracy: 0.8757
Epoch 14/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3015 - accuracy: 0.8772
Epoch 15/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3001 - accuracy: 0.8773
Epoch 16/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.2981 - accuracy: 0.8779
Epoch 17/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.2954 - accuracy: 0.8797
Epoch 18/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.2939 - accuracy: 0.8798
Epoch 19/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.2924 - accuracy: 0.8809
Epoch 20/20
2104/2104 [==============================] - 6s 3ms/step - loss: 0.2903 - accuracy: 0.8822

20 টি প্রশিক্ষণ যুগের সাথে নতুন প্রশিক্ষিত মডেলটির মূল্যায়ন করুন।

new_test_data = DataLoader.from_csv(
      filename='dev.csv',
      text_column='sentence',
      label_column='label',
      model_spec=new_model_spec,
      is_training=False)

loss, accuracy = model.evaluate(new_test_data)
28/28 [==============================] - 0s 2ms/step - loss: 0.5021 - accuracy: 0.8291

মডেল আর্কিটেকচার পরিবর্তন করুন

আপনি পরিবর্তন করে মডেল পরিবর্তন করতে পারেন model_spec । BERT-Base মডেলে কিভাবে পরিবর্তন করতে হয় তা নিচে দেখানো হয়েছে।

পরিবর্তন model_spec টেক্সট ক্লাসিফায়ার জন্য বার্ট-বেজ মডেল করতে।

spec = model_spec.get('bert_classifier')

বাকি ধাপগুলো একই।

টেনসরফ্লো লাইট মডেলে প্রশিক্ষণ-পরবর্তী কোয়ান্টাইজেশন কাস্টমাইজ করুন

পোস্ট-প্রশিক্ষণ quantization একটি রূপান্তর পন্থা যা মডেল আকার ও অনুমান লেটেন্সি কমে যায়, যখন এছাড়াও CPU- র এবং হার্ডওয়্যার বেগবর্ধক অনুমান গতি উন্নতি, মডেল সঠিকতা মধ্যে একটু অবনতি সাথে। এইভাবে, এটি মডেলটিকে অপ্টিমাইজ করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।

মডেল রপ্তানির সময় মডেল মেকার লাইব্রেরি একটি ডিফল্ট পোস্ট ট্রেনিং কোয়ানটাইজেশন টেকনিক প্রয়োগ করে। আপনি পোস্ট প্রশিক্ষণ quantization কাস্টমাইজ করতে চান তাহলে, মডেল Maker ব্যবহার করে একাধিক পোস্ট প্রশিক্ষণ quantization অপশন সমর্থন QuantizationConfig পাশাপাশি। আসুন একটি উদাহরণ হিসাবে float16 পরিমাপ গ্রহণ করি। প্রথমে, কোয়ান্টাইজেশন কনফিগারেশনটি সংজ্ঞায়িত করুন।

config = QuantizationConfig.for_float16()

তারপর আমরা এই ধরনের কনফিগারেশন সহ TensorFlow Lite মডেল রপ্তানি করি।

model.export(export_dir='.', tflite_filename='model_fp16.tflite', quantization_config=config)

আরো পড়ুন

আপনি যদি আমাদের পড়তে পারেন টেক্সট শ্রেণীবিন্যাস প্রযুক্তিগত বিবরণ জানার জন্য উদাহরণ। আরো তথ্যের জন্য, দয়া করে পড়ুন: