TensorFlow.org'da görüntüleyin | Google Colab'da çalıştırın | GitHub'da görüntüle | Not defterini indir |
genel bakış
Makine öğrenimi modelleri, veri gizliliğini iyileştirmek ve yanıt sürelerini azaltmak için sık sık TensorFlow Lite kullanılarak mobil, yerleşik ve IoT cihazlarına dağıtılır. Bu modeller genellikle metin işleme işlemleri için destek gerektirir. TensorFlow Text sürüm 2.7 ve üzeri, gelişmiş performans, azaltılmış ikili boyutlar ve bu ortamlarda kullanım için özel olarak optimize edilmiş işlemler sağlar.
Metin operatörleri
Aşağıdaki TensorFlow Metin sınıfları, bir TensorFlow Lite modeli içinden kullanılabilir.
-
FastWordpieceTokenizer
-
WhitespaceTokenizer
Model Örneği
pip install -U tensorflow-text
tutucu1 l10n-yerfrom absl import app
import numpy as np
import tensorflow as tf
import tensorflow_text as tf_text
from tensorflow.lite.python import interpreter
Aşağıdaki kod örneği, basit bir test modeli kullanarak Python'da dönüştürme işlemini ve yorumlamayı gösterir. TensorFlow Lite kullanırken bir modelin çıktısının bir tf.RaggedTensor
nesnesi olamayacağına dikkat edin. Ancak, bir tf.RaggedTensor
nesnesinin bileşenlerini döndürebilir veya to_tensor
işlevini kullanarak dönüştürebilirsiniz. Daha fazla ayrıntı için RaggedTensor kılavuzuna bakın.
class TokenizerModel(tf.keras.Model):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.tokenizer = tf_text.WhitespaceTokenizer()
@tf.function(input_signature=[
tf.TensorSpec(shape=[None], dtype=tf.string, name='input')
])
def call(self, input_tensor):
return { 'tokens': self.tokenizer.tokenize(input_tensor).flat_values }
# Test input data.
input_data = np.array(['Some minds are better kept apart'])
# Define a Keras model.
model = TokenizerModel()
# Perform TensorFlow Text inference.
tf_result = model(tf.constant(input_data))
print('TensorFlow result = ', tf_result['tokens'])
-yer tutucu4 l10n-yerTensorFlow result = tf.Tensor([b'Some' b'minds' b'are' b'better' b'kept' b'apart'], shape=(6,), dtype=string)
TensorFlow modelini TensorFlow Lite'a dönüştürün
TensorFlow Metin operatörlerine sahip bir TensorFlow modelini TensorFlow Lite'a dönüştürürken, aşağıdaki örnekte olduğu gibi allow_custom_ops
özniteliğini kullanan özel operatörler olduğunu TFLiteConverter
belirtmeniz gerekir. Daha sonra model dönüştürmeyi normalde yaptığınız gibi çalıştırabilirsiniz. Model dönüştürmenin temelleri hakkında ayrıntılı bir kılavuz için TensorFlow Lite dönüştürücü belgelerini inceleyin.
# Convert to TensorFlow Lite.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS]
converter.allow_custom_ops = True
tflite_model = converter.convert()
tutucu6 l10n-yer2022-02-01 12:09:02.062677: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them. INFO:tensorflow:Assets written to: /tmp/tmpiiuhjdn6/assets 2022-02-01 12:09:03.705144: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:363] Ignored output_format. WARNING:absl:Buffer deduplication procedure will be skipped when flatbuffer library is not properly loaded 2022-02-01 12:09:03.705185: W tensorflow/compiler/mlir/lite/python/tf_tfl_flatbuffer_helpers.cc:366] Ignored drop_control_dependency. 2022-02-01 12:09:03.921830: W tensorflow/compiler/mlir/lite/flatbuffer_export.cc:1902] The following operation(s) need TFLite custom op implementation(s): Custom ops: TFText>WhitespaceTokenizeWithOffsetsV2 Details: tf.TFText>WhitespaceTokenizeWithOffsetsV2(tensor<?x!tf_type.string>, tensor<!tf_type.string>) -> (tensor<?x!tf_type.string>, tensor<?xi64>, tensor<?xi32>, tensor<?xi32>) : {device = ""} See instructions: https://www.tensorflow.org/lite/guide/ops_custom
çıkarım
TensorFlow Lite yorumlayıcısının TensorFlow Metin operatörlerini içeren modelinizi düzgün bir şekilde okuması için, onu bu özel operatörleri kullanacak şekilde yapılandırmanız ve onlar için kayıt yöntemleri sağlamanız gerekir. Desteklenen TensorFlow Metin operatörleri için InterpreterWithCustomOps
için tam kayıt işlevleri paketi sağlamak üzere tf_text.tflite_registrar.SELECT_TFTEXT_OPS
kullanın.
Aşağıdaki örnek Python'da çıkarımı gösterirken, adımların diğer dillerde bazı küçük API çevirileri ile benzer olduğunu ve tflite_registrar
ikili dosyanızda oluşturma gerekliliğini unutmayın. Daha fazla ayrıntı için TensorFlow Lite Çıkarımına bakın.
# Perform TensorFlow Lite inference.
interp = interpreter.InterpreterWithCustomOps(
model_content=tflite_model,
custom_op_registerers=tf_text.tflite_registrar.SELECT_TFTEXT_OPS)
interp.get_signature_list()
tutucu8 l10n-yer{'serving_default': {'inputs': ['input'], 'outputs': ['tokens']} }
Ardından, girişle birlikte TensorFlow Lite yorumlayıcısı çağrılır ve yukarıdaki TensorFlow sonucuyla eşleşen bir sonuç sağlanır.
tokenize = interp.get_signature_runner('serving_default')
output = tokenize(input=input_data)
print('TensorFlow Lite result = ', output['tokens'])
tutucu10 l10n-yerTensorFlow Lite result = [b'Some' b'minds' b'are' b'better' b'kept' b'apart']