TensorFlow modellerini dönüştürme

Bu sayfada, TensorFlow modelinin nasıl dönüştürüleceği açıklanmaktadır. bir LiteRT modeline (optimize edilmiş FlatBuffer, .tflite dosya uzantısı) kullandığınızdan emin olun.

Dönüşüm iş akışı

Aşağıdaki şemada, dönüşüm hunisinin üst kısmındaki modeliniz:

TFLite dönüştürücü iş akışı

Şekil 1. Dönüştürücü iş akışı.

Aşağıdaki seçeneklerden birini kullanarak modelinizi dönüştürebilirsiniz:

  1. Python API (önerilir): Böylece dönüşümü, geliştirme ardışık düzeninize entegre edebilirsiniz. optimizasyonlar uygulama, meta veriler ekleme ve diğer birçok görevi basitleştiren sürecidir.
  2. Komut satırı: Bu yalnızca temel model dönüştürme işlemini destekler.
ziyaret edin.

Python API

Yardımcı kodu: LiteRT dönüştürücüsü hakkında daha fazla bilgi edinmek için API, print(help(tf.lite.TFLiteConverter)) çalıştırın.

Şunu kullanarak bir TensorFlow modelini dönüştürün: tf.lite.TFLiteConverter. Bir TensorFlow modeli, SavedModel biçimi kullanılarak depolanır ve üst düzey tf.keras.* API'leri (bir Keras modeli) veya (bunlardan somut işlevler oluşturduğunuz alt düzey tf.* API'leri). Kullanıcı üç seçenek sunulur (örnekler sonraki birkaç hafta içinde bölümler):

Aşağıdaki örnekte bir SavedModel'i TensorFlow'a dönüştürme Basit model.

import tensorflow as tf

# Convert the model
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir) # path to the SavedModel directory
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

Keras modelini dönüştürme

Aşağıdaki örnekte bir Keras modelinden TensorFlow'a Basit model.

import tensorflow as tf

# Create a model using high-level tf.keras.* APIs
model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(units=1, input_shape=[1]),
    tf.keras.layers.Dense(units=16, activation='relu'),
    tf.keras.layers.Dense(units=1)
])
model.compile(optimizer='sgd', loss='mean_squared_error') # compile the model
model.fit(x=[-1, 0, 1], y=[-3, -1, 1], epochs=5) # train the model
# (to generate a SavedModel) tf.saved_model.save(model, "saved_model_keras_dir")

# Convert the model.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

Somut fonksiyonları dönüştürme

Aşağıdaki örnekte dönüşüm işleminin nasıl yapılacağı gösterilmektedir somut fonksiyonların LiteRT modeli.

import tensorflow as tf

# Create a model using low-level tf.* APIs
class Squared(tf.Module):
  @tf.function(input_signature=[tf.TensorSpec(shape=[None], dtype=tf.float32)])
  def __call__(self, x):
    return tf.square(x)
model = Squared()
# (ro run your model) result = Squared(5.0) # This prints "25.0"
# (to generate a SavedModel) tf.saved_model.save(model, "saved_model_tf_dir")
concrete_func = model.__call__.get_concrete_function()

# Convert the model.

converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func],
                                                            model)
tflite_model = converter.convert()

# Save the model.
with open('model.tflite', 'wb') as f:
  f.write(tflite_model)

Diğer özellikler

Dönüşüm hataları

Sık karşılaşılan dönüşüm hataları ve bunların çözümleri aşağıda açıklanmıştır:

Komut Satırı Aracı

Şu anda pip üzerinden TensorFlow 2.x yükleyebilirsiniz, tflite_convert komutunu kullanın. Mevcut tüm işaretleri görüntülemek için şu komutu kullanın:

$ tflite_convert --help

`--output_file`. Type: string. Full path of the output file.
`--saved_model_dir`. Type: string. Full path to the SavedModel directory.
`--keras_model_file`. Type: string. Full path to the Keras H5 model file.
`--enable_v1_converter`. Type: bool. (default False) Enables the converter and flags used in TF 1.x instead of TF 2.x.

You are required to provide the `--output_file` flag and either the `--saved_model_dir` or `--keras_model_file` flag.

TensorFlow 2.x kaynağı ve dönüştürücüyü, uygulama geliştirmeden ve yükleme sırasında 'tflite_convert' öğesini değiştirebilirsiniz şununla: "bazel run tensorflow/lite/python:tflite_convert --" yazın.

SavedModel'i dönüştürme

tflite_convert \
  --saved_model_dir=/tmp/mobilenet_saved_model \
  --output_file=/tmp/mobilenet.tflite

Keras H5 modelini dönüştürme

tflite_convert \
  --keras_model_file=/tmp/mobilenet_keras_model.h5 \
  --output_file=/tmp/mobilenet.tflite