7 Aralık'ta düzenlenecek Makine Öğreniminde Kadın Sempozyumu'na katılın Şimdi kaydolun

TensorFlow modellerini dönüştürme

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Bu sayfada, TensorFlow Lite dönüştürücü kullanılarak bir TensorFlow modelinin bir TensorFlow Lite modeline ( .tflite dosya uzantısı tarafından tanımlanan optimize edilmiş bir FlatBuffer formatı) nasıl dönüştürüleceği açıklanmaktadır.

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

Aşağıdaki şema, modelinizi dönüştürmek için üst düzey iş akışını göstermektedir:

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 ): Bu, dönüştürmeyi geliştirme hattınıza entegre etmenize, optimizasyonlar uygulamanıza, meta veriler eklemenize ve dönüştürme sürecini basitleştiren diğer birçok görevi gerçekleştirmenize olanak tanır.
  2. Komut satırı : Bu yalnızca temel model dönüştürmeyi destekler.

Python API'si

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

tf.lite.TFliteConverter kullanarak bir tf.lite.TFLiteConverter modelini dönüştürün. Bir TensorFlow modeli, SavedModel formatı kullanılarak depolanır ve yüksek seviyeli tf.keras.* API'leri (bir Keras modeli) veya düşük seviyeli tf.* API'leri (somut işlevler oluşturduğunuz) kullanılarak oluşturulur. Sonuç olarak, aşağıdaki üç seçeneğiniz vardır (örnekler sonraki birkaç bölümde verilmiştir):

Aşağıdaki örnek, SavedModel'in TensorFlow Lite modeline nasıl dönüştürüleceğini gösterir.

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 örnek, bir Keras modelinin bir TensorFlow Lite modeline nasıl dönüştürüleceğini gösterir.

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ür

Aşağıdaki örnek, somut işlevlerin bir TensorFlow Lite modeline nasıl dönüştürüleceğini gösterir.

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

  • Optimizasyonları uygulayın. Kullanılan yaygın bir optimizasyon, minimum doğruluk kaybıyla modelinizin gecikmesini ve boyutunu daha da azaltabilen eğitim sonrası nicelemedir .

  • Modelleri cihazlara dağıtırken platforma özel sarmalayıcı kodu oluşturmayı kolaylaştıran meta veriler ekleyin.

Dönüşüm hataları

Aşağıdakiler yaygın dönüştürme hataları ve çözümleridir:

Komut Satırı Aracı

TensorFlow 2.x'i pip'ten yüklediyseniz , tflite_convert komutunu kullanın. Mevcut tüm bayrakları görüntülemek için aşağıdaki 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ğını indirdiyseniz ve paketi oluşturup kurmadan dönüştürücüyü bu kaynaktan çalıştırmak istiyorsanız, komutta ' tflite_convert ' yerine ' bazel run tensorflow/lite/python:tflite_convert -- ' yazabilirsiniz.

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

Sonraki adımlar

Bir istemci cihazda (ör. mobil, gömülü) çıkarım yapmak için TensorFlow Lite yorumlayıcısını kullanın.