مؤتمر Google I / O هو التفاف! تابع جلسات TensorFlow اعرض الجلسات

محول TensorFlow Lite

تحويل TensorFlow لايت يأخذ نموذج TensorFlow ويولد نموذجا TensorFlow لايت (وهو الأمثل FlatBuffer شكل حددها .tflite ملف التمديد). لديك الخياران التاليان لاستخدام المحول:

  1. بيثون API (موصى به): هذا يجعل من السهل تحويل النماذج كجزء من خط أنابيب نموذج التنمية، وتطبيق أمثل، إضافة البيانات الوصفية ولديها العديد من الميزات.
  2. سطر الأوامر : هذا يعتمد فقط تحويل النموذج الأساسي.

سير عمل محول TFLite

واجهة برمجة تطبيقات Python

مساعد كود: تحديد TensorFlow الإصدار المثبت، تشغيل print(tf.__version__) ولمعرفة المزيد عن تحويل API TensorFlow لايت، تشغيل print(help(tf.lite.TFLiteConverter)) .

إذا كنت قد تثبيت TensorFlow الإصدار 2.x ، لديك الخيارين التاليين: (إذا كنت قد تثبيت TensorFlow 1.X ، الرجوع إلى جيثب )

يظهر المثال التالي كيفية تحويل SavedModel إلى نموذج TensorFlow لايت.

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

يظهر المثال التالي كيفية تحويل Keras نموذج إلى نموذج TensorFlow لايت.

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)

تحويل وظائف ملموسة

يظهر المثال التالي كيفية تحويل وظائف محددة في نموذج TensorFlow لايت.

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.
# Notes that for the versions earlier than TensorFlow 2.7, the
# from_concrete_functions API is able to work when there is only the first
# argument given:
# > converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])
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)

ميزات أخرى

  • تطبيق أمثل . A الأمثل شيوعا هو تكميم التدريب بعد ، والتي يمكن زيادة خفض الكمون النموذج الخاص بك وحجم مع فقدان الحد الادنى في الدقة.

  • إضافة الفوقية ، مما يجعل من الأسهل لإنشاء كود المجمع منصة محددة عند نشر النماذج على الأجهزة.

أخطاء التحويل

فيما يلي أخطاء التحويل الشائعة وحلولها:

أداة سطر الأوامر

ينصح بشدة أن استخدام API بيثون المذكورة أعلاه بدلا من ذلك، إذا كان ذلك ممكنا.

إذا كنت قد تثبيت TensorFlow الإصدار 2.x من نقطة ، استخدام tflite_convert الأوامر كما يلي: (إذا كنت قد تثبيت الإصدار 2.x TensorFlow من مصدر ثم يمكنك استبدال ' tflite_convert ' مع ' bazel run //tensorflow/lite/python:tflite_convert -- 'في المقاطع التالية، وإذا كنت قد تثبيت TensorFlow 1.X ثم الرجوع إلى جيثب ( إشارة ، أمثلة ))

tflite_convert : لعرض جميع الأعلام المتاحة، استخدم الأمر التالي:

$ 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.

تحويل SavedModel

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

تحويل نموذج Keras H5

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

الخطوات التالية

استخدام مترجم TensorFlow لايت للاستدلال تعمل على جهاز العميل (مثل الجوال، جزءا لا يتجزأ).