TensorFlow Lite Model Maker ile metin sınıflandırması

TensorFlow.org'da görüntüleyin Google Colab'de çalıştırın Kaynağı GitHub'da görüntüleyin Defteri indirin

TensorFlow Lite Model Maker kitaplığı , bu modeli cihaz üzerindeki makine öğrenimi uygulamaları için dağıtırken bir TensorFlow modelini özel giriş verilerine uyarlama ve dönüştürme sürecini basitleştirir.

Bu defter, bir mobil cihazda film incelemelerini sınıflandırmak için yaygın olarak kullanılan bir metin sınıflandırma modelinin uyarlanmasını ve dönüştürülmesini göstermek için Model Maker kitaplığını kullanan uçtan uca bir örnek göstermektedir. Metin sınıflandırma modeli, metni önceden tanımlanmış kategoriler halinde sınıflandırır. Girişler önceden işlenmiş metin olmalıdır ve çıktılar kategorilerin olasılıklarıdır. Bu öğreticide kullanılan veri kümesi olumlu ve olumsuz film incelemeleridir.

Önkoşullar

Gerekli paketleri kurun

Bu örneği çalıştırmak için GitHub deposundan Model Maker paketi de dahil olmak üzere gerekli paketleri yükleyin.

pip install -q tflite-model-maker

Gerekli paketleri içe aktarın.

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/numba/core/errors.py:154: UserWarning: Insufficiently recent colorama version found. Numba requires colorama >= 0.3.9
  warnings.warn(msg)

Örnek eğitim verilerini indirin.

Bu eğitimde, GLUE benchmarkındaki görevlerden biri olan SST-2'yi (Stanford Sentiment Treebank) kullanacağız. Eğitim için 67.349 film incelemesi ve test için 872 film incelemesi içerir. Veri kümesinin iki sınıfı vardır: olumlu ve olumsuz film incelemeleri.

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 [==============================] - 2s 0us/step

SST-2 veri kümesi TSV formatında saklanır. TSV'ye ve CSV arasındaki tek fark, TSV bir sekme kullanmasıdır \t virgül yerine, ayırıcı olarak karakteri , CSV biçiminde.

Eğitim veri kümesinin ilk 5 satırı aşağıda verilmiştir. etiket = 0 negatif, etiket = 1 pozitif anlamına gelir.

cümle etiket
ebeveyn birimlerinden yeni salgıları saklayın 0
zeka içermez, sadece yorucu şakalar içerir 0
karakterlerini seven ve insan doğası hakkında oldukça güzel bir şey ileten 1
baştan sona aynı kalmaktan tamamen memnun kalır 0
film yapımcılarının araştırabileceği en kötü intikam klişelerinde 0

Daha sonra, veri setini bir Pandas veri çerçevesine yükleyeceğiz ve mevcut etiket adlarını ( 0 ve 1 ) daha insan tarafından okunabilir ( negative ve positive ) adlarla değiştirip bunları model eğitimi için kullanacağız.

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')

Hızlı başlangıç

Bir metin sınıflandırma modeli eğitmenin beş adımı vardır:

Adım 1. Bir metin sınıflandırma modeli mimarisi seçin.

Burada, makul doğrulukta küçük ve hızlı bir model üretecek olan ortalama kelime gömme modeli mimarisini kullanıyoruz.

spec = model_spec.get('average_word_vec')

Model Maker, BERT gibi diğer model mimarilerini de destekler. Diğer mimariler hakkında bilgi edinmek istiyorsanız, aşağıdaki Metin Sınıflandırıcı için bir model mimarisi seçin bölümüne bakın.

Adım 2. Eğitim ve test verilerini yükleyin, ardından bunları belirli bir model_spec göre ön işlemden model_spec .

Model Maker, giriş verilerini CSV formatında alabilir. Eğitim ve test veri kümesini daha önce oluşturulmuş insan tarafından okunabilir etiket adıyla yükleyeceğiz.

Her model mimarisi, giriş verilerinin belirli bir şekilde işlenmesini gerektirir. DataLoader gelen şartı okur model_spec ve otomatik gerekli ön işlemeyi yürütür.

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)

Adım 3. TensorFlow modelini eğitim verileriyle eğitin.

Ortalama kelime gömme modeli varsayılan olarak batch_size = 32 kullanır. Bu nedenle eğitim veri setinde 67.349 cümleden geçmenin 2104 adım sürdüğünü göreceksiniz. Modeli 10 dönem için eğiteceğiz, yani eğitim veri kümesinden 10 kez geçeceğiz.

model = text_classifier.create(train_data, model_spec=spec, epochs=10)
Epoch 1/10
2104/2104 [==============================] - 8s 3ms/step - loss: 0.6808 - accuracy: 0.5622
Epoch 2/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.5791 - accuracy: 0.7025
Epoch 3/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.4578 - accuracy: 0.7896
Epoch 4/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.4040 - accuracy: 0.8222
Epoch 5/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3768 - accuracy: 0.8380
Epoch 6/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3614 - accuracy: 0.8481
Epoch 7/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3490 - accuracy: 0.8553
Epoch 8/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3420 - accuracy: 0.8600
Epoch 9/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3354 - accuracy: 0.8630
Epoch 10/10
2104/2104 [==============================] - 6s 3ms/step - loss: 0.3293 - accuracy: 0.8660

Adım 4. Modeli test verileriyle değerlendirin.

Eğitim veri setindeki cümleleri kullanarak metin sınıflandırma modelini eğittikten sonra, modelin daha önce hiç görmediği yeni verilere karşı nasıl performans gösterdiğini değerlendirmek için test veri setinde kalan 872 cümleyi kullanacağız.

Varsayılan parti boyutu 32 olduğundan, test veri kümesindeki 872 cümleden geçmek 28 adım alacaktır.

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

Adım 5. TensorFlow Lite modeli olarak dışa aktarın.

TensorFlow Lite formatında eğittiğimiz metin sınıflandırmasını dışa aktaralım. Modeli hangi klasörün dışa aktaracağını belirteceğiz. Varsayılan olarak, kayan TFLite modeli ortalama kelime gömme modeli mimarisi için dışa aktarılır.

model.export(export_dir='average_word_vec')

Colab'ın sol kenar çubuğunu kullanarak TensorFlow Lite model dosyasını indirebilirsiniz. Yukarıdaki export_dir parametresinde belirttiğimiz gibi average_word_vec klasörüne gidin, model.tflite dosyasına sağ tıklayın ve yerel bilgisayarınıza indirmek için Download seçin.

Bu model, TensorFlow Lite Görev Kitaplığı'nın NLClassifier API'si kullanılarak bir Android veya iOS uygulamasına entegre edilebilir.

Modelin çalışan bir uygulamada nasıl kullanıldığı hakkında daha fazla ayrıntı için TFLite Metin Sınıflandırma örnek uygulamasına bakın.

Not 1: Android Studio Model Bağlama henüz metin sınıflandırmasını desteklemediğinden lütfen TensorFlow Lite Görev Kitaplığı'nı kullanın.

Not 2: TFLite modeli ile aynı klasörde bir model.json dosyası bulunmaktadır. TensorFlow Lite modeli içinde paketlenmiş meta verilerin JSON temsilini içerir. Model meta verileri, TFLite Görev Kitaplığı'nın modelin ne yaptığını ve model için verileri nasıl önceden işleyeceğini / işleyeceğini bilmesine yardımcı olur. model.json dosyasını yalnızca bilgi amaçlı olduğundan ve içeriği zaten TFLite dosyasının içinde olduğundan indirmenize gerek yoktur.

Not 3: MobileBERT veya BERT-Base mimarisini kullanarak bir metin sınıflandırma modeli eğitirseniz, eğitilmiş modeli bir mobil uygulamaya entegre etmek için bunun yerine BertNLClassifier API kullanmanız gerekecektir .

Aşağıdaki bölümler, daha fazla ayrıntı göstermek için örnek adım adım ilerlemektedir.

Metin Sınıflandırıcı için bir model mimarisi seçin

Her model_spec nesnesi, metin sınıflandırıcı için belirli bir modeli temsil eder. TensorFlow Lite Model Maker şu anda MobileBERT'i , ortalama kelime düğünlerini ve BERT-Base modellerini desteklemektedir.

Desteklenen Model Model_spec adı Model Açıklaması Model boyutu
Ortalama Kelime Gömme "average_word_vec" RELU aktivasyonu ile metin kelime düğünlerinin ortalaması. <1MB
MobileBERT "mobilebert_classifier" Cihaz üstü uygulamalar için uygun rekabetçi sonuçlar elde ederken BERT-Base'den 4,3 kat daha küçük ve 5,5 kat daha hızlı. 25MB w / nicemleme
100MB niceleme olmadan
BERT-Tabanı "bert_classifier" NLP görevlerinde yaygın olarak kullanılan standart BERT modeli. 300 MB

Hızlı başlangıçta, ortalama kelime yerleştirme modelini kullandık. Daha yüksek doğrulukta bir model eğitmek için MobileBERT'e geçelim .

mb_spec = model_spec.get('mobilebert_classifier')

Eğitim verilerini yükle

Bu öğretici üzerinde çalışmak için kendi veri kümenizi yükleyebilirsiniz. Colab'de sol kenar çubuğunu kullanarak veri kümenizi yükleyin.

Dosya yükleme

Veri kümenizi buluta yüklememeyi tercih ederseniz, kılavuzu izleyerek kütüphaneyi yerel olarak da çalıştırabilirsiniz.

Basit tutmak için, daha önce indirilen SST-2 veri kümesini yeniden kullanacağız. Verileri yüklemek için DataLoader.from_csv yöntemini DataLoader.from_csv .

Model mimarisini değiştirdiğimiz için, yeni ön işleme mantığını uygulamak için eğitimi ve test veri setini yeniden yüklememiz gerekeceğini lütfen unutmayın.

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)

Model Maker kitaplığı, verileri yüklemek için from_folder() yöntemini de destekler. Aynı sınıfın metin verilerinin aynı alt dizinde olduğunu ve alt klasör adının sınıf adı olduğunu varsayar. Her metin dosyası bir film inceleme örneği içerir. class_labels parametresi, hangi alt klasörlerin olduğunu belirtmek için kullanılır.

TensorFlow Modeli Eğitin

Eğitim verilerini kullanarak bir metin sınıflandırma modeli eğitin.

model = text_classifier.create(train_data, model_spec=mb_spec, epochs=3)
Epoch 1/3
1403/1403 [==============================] - 319s 191ms/step - loss: 0.3808 - test_accuracy: 0.8441
Epoch 2/3
1403/1403 [==============================] - 262s 187ms/step - loss: 0.1296 - test_accuracy: 0.9534
Epoch 3/3
1403/1403 [==============================] - 264s 188ms/step - loss: 0.0750 - test_accuracy: 0.9759

Ayrıntılı model yapısını inceleyin.

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
__________________________________________________________________________________________________

Modeli değerlendirin

Test verilerini kullanarak yeni eğittiğimiz modeli değerlendirin ve kayıp ve doğruluk değerini ölçün.

loss, acc = model.evaluate(test_data)
28/28 [==============================] - 7s 50ms/step - loss: 0.3626 - test_accuracy: 0.9037

TensorFlow Lite modeli olarak dışa aktar

Eğitimli modeli meta verilerle TensorFlow Lite model biçimine dönüştürün, böylece daha sonra bir cihaz üzerindeki makine öğrenimi uygulamasında kullanabilirsiniz. Etiket dosyası ve sözcük dosyası meta verilere yerleştirilmiştir. Varsayılan TFLite dosya adı model.tflite .

Birçok cihaz üzerinde makine öğrenimi uygulamasında, model boyutu önemli bir faktördür. Bu nedenle, modeli küçültmek ve potansiyel olarak daha hızlı çalışması için nicelleştirmeniz önerilir. Varsayılan eğitim sonrası niceleme tekniği, BERT ve MobileBERT modelleri için dinamik aralık nicemlemesidir.

model.export(export_dir='mobilebert/')

TensorFlow Lite model dosyası, TensorFlow Lite Görev Kitaplığı'ndaki BertNLClassifier API kullanılarak bir mobil uygulamaya entegre edilebilir. Lütfen bunun, ortalama kelime vektör modeli mimarisiyle eğitilmiş metin sınıflandırmasını entegre etmek için kullanılan NLClassifier API'den farklı olduğunu unutmayın.

Dışa aktarma formatları aşağıdakilerden biri veya bir listesi olabilir:

Varsayılan olarak, yalnızca model meta verilerini içeren TensorFlow Lite model dosyasını dışa aktarır. Daha iyi inceleme için modelle ilgili diğer dosyaları dışa aktarmayı da seçebilirsiniz. Örneğin, yalnızca etiket dosyasını ve sözcük dosyasını aşağıdaki gibi dışa aktarın:

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

Doğruluğunu ölçmek için TFLite modelini eval_tflite yöntemiyle evaluate_tflite . Eğitimli TensorFlow modelini TFLite formatına dönüştürmek ve niceleme uygulamak, doğruluğunu etkileyebilir, bu nedenle dağıtımdan önce TFLite model doğruluğunun değerlendirilmesi önerilir.

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

Gelişmiş Kullanım

create fonksiyonu Modeli Üretici kütüphane kullandığı modelleri oluşturmak için o sürücü fonksiyonudur. model_spec parametresi, model spesifikasyonunu tanımlar. AverageWordVecSpec ve BertClassifierSpec sınıfları şu anda desteklenmektedir. create işlevi aşağıdaki adımlardan oluşur:

  1. model_spec göre metin sınıflandırıcı için model oluşturur.
  2. Sınıflandırıcı modelini eğitir. Varsayılan dönemler ve varsayılan parti boyutu, model_spec nesnesindeki default_training_epochs ve default_batch_size değişkenleri tarafından ayarlanır.

Bu bölüm, modeli ayarlama ve hiperparametreleri eğitme gibi gelişmiş kullanım konularını kapsar.

MobileBERT modeli hiper parametrelerini özelleştirin

Ayarlayabileceğiniz model parametreleri şunlardır:

  • seq_len : seq_len dizinin uzunluğu.
  • initializer_range : Tüm ağırlık matrislerini başlatmak için truncated_normal_initializer standart sapması.
  • trainable : Önceden eğitilmiş katmanın eğitilebilir olup olmadığını belirten Boole.

Ayarlayabileceğiniz eğitim hattı parametreleri şunlardır:

  • model_dir : Model kontrol noktası dosyalarının konumu. Ayarlanmazsa, geçici bir dizin kullanılacaktır.
  • dropout_rate : Bırakma oranı.
  • learning_rate : Adam optimizer için ilk öğrenme oranı.
  • tpu : Bağlanılacak TPU adresi.

Örneğin, seq_len=256 (varsayılan 128'dir) olarak ayarlayabilirsiniz. Bu, modelin daha uzun metni sınıflandırmasına izin verir.

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

Ortalama kelime gömme modeli hiperparametrelerini özelleştirin

AverageWordVecSpec sınıfındaki wordvec_dim ve seq_len değişkenleri gibi model altyapısını ayarlayabilirsiniz.

Örneğin, modeli daha büyük bir wordvec_dim değeri ile wordvec_dim . Modeli değiştirirseniz yeni bir model_spec gerektiğini unutmayın.

new_model_spec = AverageWordVecSpec(wordvec_dim=32)

Önceden işlenmiş verileri alın.

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

Yeni modeli eğitin.

model = text_classifier.create(new_train_data, model_spec=new_model_spec)
Epoch 1/3
2104/2104 [==============================] - 9s 4ms/step - loss: 0.6725 - accuracy: 0.5775
Epoch 2/3
2104/2104 [==============================] - 7s 3ms/step - loss: 0.5202 - accuracy: 0.7484
Epoch 3/3
2104/2104 [==============================] - 7s 3ms/step - loss: 0.4149 - accuracy: 0.8130

Eğitim hiper parametrelerini ayarlayın

Sen ayar da yapabilirsiniz gibi eğitim hyperparameters epochs ve batch_size modeli doğruluğunu etkileyebilir. Örneğin,

  • epochs : daha fazla epoch daha iyi doğruluk sağlayabilir, ancak aşırı uyuma neden olabilir.
  • batch_size : bir eğitim adımında kullanılacak örnek sayısı.

Örneğin, daha fazla dönemle antrenman yapabilirsiniz.

model = text_classifier.create(new_train_data, model_spec=new_model_spec, epochs=20)
Epoch 1/20
2104/2104 [==============================] - 8s 3ms/step - loss: 0.6646 - accuracy: 0.5916
Epoch 2/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.4966 - accuracy: 0.7625
Epoch 3/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.4063 - accuracy: 0.8183
Epoch 4/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3713 - accuracy: 0.8380
Epoch 5/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3530 - accuracy: 0.8508
Epoch 6/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3409 - accuracy: 0.8565
Epoch 7/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3305 - accuracy: 0.8611
Epoch 8/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3240 - accuracy: 0.8663
Epoch 9/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3186 - accuracy: 0.8677
Epoch 10/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3137 - accuracy: 0.8701
Epoch 11/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3100 - accuracy: 0.8725
Epoch 12/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3071 - accuracy: 0.8732
Epoch 13/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3041 - accuracy: 0.8740
Epoch 14/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.3013 - accuracy: 0.8767
Epoch 15/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.2999 - accuracy: 0.8772
Epoch 16/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.2976 - accuracy: 0.8772
Epoch 17/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.2963 - accuracy: 0.8797
Epoch 18/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.2942 - accuracy: 0.8806
Epoch 19/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.2927 - accuracy: 0.8807
Epoch 20/20
2104/2104 [==============================] - 7s 3ms/step - loss: 0.2900 - accuracy: 0.8818

Yeni yeniden eğitilmiş modeli 20 eğitim dönemi ile değerlendirin.

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.4985 - accuracy: 0.8326

Model Mimarisini Değiştirin

model_spec değiştirerek modeli değiştirebilirsiniz. Aşağıda BERT-Base modeline nasıl geçileceği gösterilmektedir.

Metin sınıflandırıcı için model_spec BERT-Base modeline değiştirin.

spec = model_spec.get('bert_classifier')

Kalan adımlar aynı.

TensorFlow Lite modelinde eğitim sonrası nicelemeyi özelleştirme

Eğitim sonrası niceleme , model boyutunu ve çıkarım gecikmesini azaltabilen, aynı zamanda CPU ve donanım hızlandırıcı çıkarım hızını model doğruluğunda küçük bir bozulma ile iyileştirebilen bir dönüştürme tekniğidir. Bu nedenle, modeli optimize etmek için yaygın olarak kullanılır.

Model Maker kitaplığı, modeli dışa aktarırken varsayılan bir eğitim sonrası niceleme tekniği uygular. Eğitim sonrası nicelemeyi özelleştirmek istiyorsanız Model Maker, QuantizationConfig kullanarak birden fazla eğitim sonrası niceleme seçeneğini destekler. Örnek olarak float16 nicemlemeyi alalım. İlk olarak, niceleme yapılandırmasını tanımlayın.

config = QuantizationConfig.for_float16()

Ardından TensorFlow Lite modelini böyle bir konfigürasyonla dışa aktarıyoruz.

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

Devamını oku

Teknik detayları öğrenmek için metin sınıflandırma örneğimizi okuyabilirsiniz. Daha fazla bilgi için lütfen şu adrese bakın: