질문이있다? TensorFlow 포럼 방문 포럼 에서 커뮤니티와 연결

TensorFlow Lite Model Maker를 사용한 텍스트 분류

TensorFlow.org에서보기 Google Colab에서 실행 GitHub에서 소스보기 노트북 다운로드

TensorFlow Lite Model Maker 라이브러리 는 기기 내 ML 애플리케이션 용으로이 모델을 배포 할 때 TensorFlow 모델을 특정 입력 데이터로 조정하고 변환하는 프로세스를 단순화합니다.

이 노트북은 Model Maker 라이브러리를 활용하여 모바일 장치에서 영화 리뷰를 분류하기 위해 일반적으로 사용되는 텍스트 분류 모델의 적응 및 변환을 설명하는 종단 간 예제를 보여줍니다. 텍스트 분류 모델은 텍스트를 미리 정의 된 범주로 분류합니다. 입력은 사전 처리 된 텍스트 여야하며 출력은 범주의 확률입니다. 이 튜토리얼에 사용 된 데이터 세트는 긍정적이고 부정적인 영화 리뷰입니다.

전제 조건

필수 패키지 설치

이 예제를 실행하려면 GitHub 리포지토리 의 Model Maker 패키지를 포함하여 필요한 패키지를 설치합니다.

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

샘플 훈련 데이터를 다운로드하십시오.

이 튜토리얼에서, 우리는 사용 SST-2 에서 작업 중 하나입니다 (스탠포드 심리 Treebank) GLUE의 벤치 마크. 교육을위한 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 [==============================] - 2s 0us/step

SST-2 데이터 세트는 TSV 형식으로 저장됩니다. TSV 및 CSV 사이의 유일한 차이는 TSV가 탭을 사용한다는 것입니다 \t 대신 쉼표의 구분 기호로 문자를 , CSV 형식으로.

다음은 훈련 데이터 세트의 처음 5 줄입니다. label = 0은 음수, label = 1은 양수를 의미합니다.

문장 상표
부모 단위에서 새로운 분비물 숨기기 0
재치가없고 고된 개그 만 포함 0
캐릭터를 사랑하고 인간 본성에 대해 다소 아름다운 것을 전달하는 1
전체적으로 동일하게 유지하기 위해 완전히 만족합니다. 0
최악의 복수의 진부한 진부함에서 영화 제작자는 0

다음으로 데이터 세트를 Pandas 데이터 프레임에로드하고 현재 라벨 이름 ( 01 )을 사람이 더 읽을 수있는 이름 ( negativepositive )으로 변경하고 모델 학습에 사용합니다.

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

빠른 시작

텍스트 분류 모델을 학습시키는 5 단계가 있습니다.

1 단계. 텍스트 분류 모델 아키텍처를 선택합니다.

여기서 우리는 평균 단어 임베딩 모델 아키텍처를 사용하여 적절한 정확도로 작고 빠른 모델을 생성합니다.

spec = model_spec.get('average_word_vec')

Model Maker는 BERT 와 같은 다른 모델 아키텍처도 지원합니다. 다른 아키텍처에 대해 알아 보려면 아래의 텍스트 분류기에 대한 모델 아키텍처 선택 섹션을 참조하세요.

2 단계. 학습 및 테스트 데이터를로드 한 다음 특정 model_spec 에 따라 사전 처리합니다.

Model Maker는 CSV 형식의 입력 데이터를 가져올 수 있습니다. 이전에 생성 된 사람이 읽을 수있는 레이블 이름으로 학습 및 테스트 데이터 세트를로드합니다.

각 모델 아키텍처에는 특정 방식으로 처리 할 입력 데이터가 필요합니다. DataLoadermodel_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)

3 단계. 학습 데이터로 TensorFlow 모델을 학습시킵니다.

평균 단어 임베딩 모델은 기본적으로 batch_size = 32 를 사용합니다. 따라서 훈련 데이터 세트에서 67,349 개의 문장을 통과하는 데 2104 단계가 필요하다는 것을 알 수 있습니다. 우리는 10 epoch에 대해 모델을 훈련 할 것입니다. 즉, 훈련 데이터 세트를 10 번 통과해야합니다.

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

4 단계. 테스트 데이터로 모델을 평가합니다.

학습 데이터 세트의 문장을 사용하여 텍스트 분류 모델을 학습 한 후 테스트 데이터 세트의 나머지 872 개 문장을 사용하여 모델이 이전에 본 적이없는 새로운 데이터에 대해 어떻게 작동하는지 평가합니다.

기본 배치 크기는 32이므로 테스트 데이터 세트의 872 개 문장을 통과하려면 28 단계가 필요합니다.

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

5 단계. TensorFlow Lite 모델로 내 보냅니다.

TensorFlow Lite 형식으로 학습 한 텍스트 분류를 내보내겠습니다. 모델을 내보낼 폴더를 지정합니다. 기본적으로 float TFLite 모델은 평균 단어 임베딩 모델 아키텍처 용으로 내보내집니다.

model.export(export_dir='average_word_vec')

Colab의 왼쪽 사이드 바를 사용하여 TensorFlow Lite 모델 파일을 다운로드 할 수 있습니다. 위의 export_dir 매개 변수에 지정된대로 average_word_vec 폴더로 이동하여 model.tflite 파일을 마우스 오른쪽 버튼으로 클릭하고 Download 를 선택하여 로컬 컴퓨터에 다운로드합니다.

이 모델은 TensorFlow Lite Task LibraryNLClassifier API 를 사용하여 Android 또는 iOS 앱에 통합 할 수 있습니다.

작동중인 앱에서 모델이 사용되는 방법에 대한 자세한 내용은 TFLite 텍스트 분류 샘플 앱 을 참조하세요.

참고 1 : Android Studio 모델 바인딩은 아직 텍스트 분류를 지원하지 않으므로 TensorFlow Lite 태스크 라이브러리를 사용하십시오.

참고 2 : TFLite 모델과 동일한 폴더에 model.json 파일이 있습니다. TensorFlow Lite 모델 내에 번들로 제공되는 메타 데이터 의 JSON 표현이 포함됩니다. 모델 메타 데이터는 TFLite 태스크 라이브러리가 모델이하는 일과 모델에 대한 데이터를 사전 처리 / 사후 처리하는 방법을 파악하는 데 도움이됩니다. model.json 파일은 정보 제공 목적으로 만 사용되며 해당 내용이 이미 TFLite 파일 내에 있으므로 다운로드 할 필요가 없습니다.

참고 3 : MobileBERT 또는 BERT-Base 아키텍처를 사용하여 텍스트 분류 모델을 학습하는 경우 학습 된 모델을 모바일 앱에 통합하는 대신 BertNLClassifier API 를 사용해야합니다.

다음 섹션에서는 자세한 내용을 보여주기 위해 예제를 단계별로 안내합니다.

텍스트 분류기에 대한 모델 아키텍처 선택

model_spec 객체는 텍스트 분류기의 특정 모델을 나타냅니다. TensorFlow Lite Model Maker는 현재 MobileBERT , 평균 단어 임베딩 및 BERT-Base 모델을 지원합니다.

지원 모델 model_spec의 이름 모델 설명 모델 사이즈
평균 워드 임베딩 'average_word_vec' RELU 활성화를 사용한 평균 텍스트 단어 임베딩. 1MB 미만
MobileBERT 'mobilebert_classifier' BERT-Base보다 4.3 배 더 작고 5.5 배 더 빠르면서도 온 디바이스 애플리케이션에 적합한 경쟁력있는 결과를 달성합니다. 25MB (양자화 포함)
양자화없이 100MB
BERT 기반 'bert_classifier' NLP 작업에서 널리 사용되는 표준 BERT 모델. 300MB

빠른 시작에서는 평균 단어 임베딩 모델을 사용했습니다. 더 높은 정확도로 모델을 훈련시키기 위해 MobileBERT 로 전환합시다.

mb_spec = model_spec.get('mobilebert_classifier')

훈련 데이터 불러 오기

이 자습서를 통해 작업 할 자신의 데이터 세트를 업로드 할 수 있습니다. Colab의 왼쪽 사이드 바를 사용하여 데이터 세트를 업로드합니다.

파일 업로드

데이터 세트를 클라우드에 업로드하지 않으려면 가이드 에 따라 로컬에서 라이브러리를 실행할 수도 있습니다.

간단하게하기 위해 이전에 다운로드 한 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)

Model Maker 라이브러리는 데이터를로드하는 from_folder() 메서드도 지원합니다. 동일한 클래스의 텍스트 데이터가 동일한 하위 디렉토리에 있고 하위 폴더 이름이 클래스 이름이라고 가정합니다. 각 텍스트 파일에는 하나의 영화 리뷰 샘플이 포함되어 있습니다. class_labels 매개 변수는 하위 폴더를 지정하는 데 사용됩니다.

TensorFlow 모델 훈련

훈련 데이터를 사용하여 텍스트 분류 모델을 훈련시킵니다.

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

자세한 모델 구조를 조사하십시오.

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 50ms/step - loss: 0.3626 - test_accuracy: 0.9037

TensorFlow Lite 모델로 내보내기

나중에 온 디바이스 ML 애플리케이션에서 사용할 수 있도록 학습 된 모델을 메타 데이터 가있는 TensorFlow Lite 모델 형식으로 변환합니다. 레이블 파일과 vocab 파일은 메타 데이터에 포함됩니다. 기본 TFLite 파일 이름은 model.tflite 입니다.

많은 온 디바이스 ML 애플리케이션에서 모델 크기는 중요한 요소입니다. 따라서 모델을 더 작게 만들고 잠재적으로 더 빠르게 실행하기 위해 모델 양자화를 적용하는 것이 좋습니다. 기본 훈련 후 양자화 기술은 BERT 및 MobileBERT 모델에 대한 동적 범위 양자화입니다.

model.export(export_dir='mobilebert/')

TensorFlow Lite 모델 파일은 TensorFlow Lite Task LibraryBertNLClassifier API 를 사용하여 모바일 앱에 통합 할 수 있습니다. 이것은 평균 단어 벡터 모델 아키텍처로 훈련 된 텍스트 분류를 통합하는 데 사용되는 NLClassifier API 와 다릅니다 .

내보내기 형식은 다음 중 하나 또는 목록 일 수 있습니다.

기본적으로 모델 메타 데이터가 포함 된 TensorFlow Lite 모델 파일 만 내 보냅니다. 더 나은 검사를 위해 모델과 관련된 다른 파일을 내보내도록 선택할 수도 있습니다. 예를 들어 다음과 같이 레이블 파일과 vocab 파일 만 내 보냅니다.

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

evaluate_tflite 방법으로 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.9071100917431193}

고급 사용법

create 함수는 Model Maker 라이브러리가 모델을 생성하는 데 사용하는 드라이버 함수입니다. model_spec 매개 변수는 모델 사양을 정의합니다. AverageWordVecSpecBertClassifierSpec 클래스는 현재 지원됩니다. create 기능은 다음 단계로 구성됩니다.

  1. model_spec 에 따라 텍스트 분류기의 모델을 만듭니다.
  2. 분류기 모델을 훈련시킵니다. 기본 epochs 및 기본 배치 크기는 model_spec 객체의 default_training_epochsdefault_batch_size 변수에 의해 설정됩니다.

이 섹션에서는 모델 조정 및 하이퍼 파라미터 훈련과 같은 고급 사용 주제를 다룹니다.

MobileBERT 모델 하이퍼 파라미터 사용자 지정

조정할 수있는 모델 매개 변수는 다음과 같습니다.

  • seq_len : 모델에 공급할 시퀀스의 길이.
  • initializer_range : 모든 가중치 행렬을 초기화하기위한 truncated_normal_initializer 의 표준 편차입니다.
  • trainable : 사전 훈련 된 레이어가 훈련 가능한지 여부를 지정하는 부울입니다.

조정할 수있는 훈련 파이프 라인 매개 변수는 다음과 같습니다.

  • model_dir : 모델 체크 포인트 파일의 위치. 설정하지 않으면 임시 디렉토리가 사용됩니다.
  • dropout_rate : 드롭 아웃 비율입니다.
  • learning_rate : Adam 최적화 프로그램의 초기 학습률입니다.
  • tpu : 연결할 TPU 주소.

예를 들어 seq_len=256 (기본값은 128)을 설정할 수 있습니다. 이를 통해 모델이 긴 텍스트를 분류 할 수 있습니다.

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

평균 단어 임베딩 모델 하이퍼 파라미터 사용자 지정

AverageWordVecSpec 클래스에서 wordvec_dimseq_len 변수와 같은 모델 인프라를 조정할 수 있습니다.

예를 들어, 더 큰 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 [==============================] - 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

훈련 초 매개 변수 조정

당신은 조정할 수도 있습니다처럼 훈련하는 하이퍼 epochsbatch_size 모델의 정확성에 영향을 미칩니다. 예를 들어

  • epochs : 더 많은 epoch는 더 나은 정확도를 얻을 수 있지만 과적 합으로 이어질 수 있습니다.
  • batch_size : 한 학습 단계에서 사용할 샘플 수.

예를 들어 더 많은 시대로 훈련 할 수 있습니다.

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

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

모델 아키텍처 변경

model_spec 변경하여 모델을 변경할 수 있습니다. 다음은 BERT-Base 모델로 변경하는 방법을 보여줍니다.

텍스트 분류기에 대한 model_spec 을 BERT-Base 모델로 변경하십시오.

spec = model_spec.get('bert_classifier')

나머지 단계는 동일합니다.

TensorFlow Lite 모델에서 학습 후 양자화 사용자 지정

훈련 후 양자화 는 모델 크기와 추론 지연 시간을 줄이는 동시에 모델 정확도를 약간 저하시키면서 CPU 및 하드웨어 가속기 추론 속도를 개선 할 수있는 변환 기술입니다. 따라서 모델을 최적화하는 데 널리 사용됩니다.

Model Maker 라이브러리는 모델을 내보낼 때 기본 학습 후 양자화 기술을 적용합니다. 학습 후 양자화를 사용자 지정하려는 경우 Model Maker는 QuantizationConfig 를 사용하여 여러 학습 후 양자화 옵션을 지원합니다. float16 양자화를 예로 들어 봅시다. 먼저 양자화 구성을 정의합니다.

config = QuantizationConfig.for_float16()

그런 다음 이러한 구성으로 TensorFlow Lite 모델을 내 보냅니다.

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

더 읽어보기

텍스트 분류 예제를 읽고 기술적 세부 사항을 배울 수 있습니다. 자세한 내용은 다음을 참조하십시오.