TensorFlow लाइट कनवर्टर

TensorFlow लाइट कनवर्टर एक TensorFlow मॉडल लेता है और एक TensorFlow लाइट मॉडल (एक अनुकूलित उत्पन्न FlatBuffer प्रारूप से पहचान .tflite फाइल एक्सटेंशन)। कनवर्टर का उपयोग करने के लिए आपके पास निम्नलिखित दो विकल्प हैं:

  1. अजगर एपीआई (अनुशंसित): इससे मॉडल विकास पाइपलाइन के हिस्से के रूप मॉडल कन्वर्ट करने के लिए बनाता है, लागू अनुकूलन, मेटाडेटा जोड़ने और कई और अधिक विशेषताएं है।
  2. कमांड लाइन : यह केवल बुनियादी मॉडल रूपांतरण का समर्थन करता है।

TFlite कनवर्टर वर्कफ़्लो

पायथन एपीआई

हेल्पर कोड: स्थापित TensorFlow संस्करण, चलाने की पहचान करने के print(tf.__version__) और TensorFlow लाइट कनवर्टर API के बारे में अधिक जानने के लिए, रन print(help(tf.lite.TFLiteConverter))

यदि आपने इस बात TensorFlow 2.x स्थापित , आप निम्न दो विकल्प हैं: (यदि आप गए TensorFlow 1.x स्थापित , का उल्लेख Github )

निम्न उदाहरण से पता चलता है कि कैसे एक कन्वर्ट करने के लिए 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 एक 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)

अन्य सुविधाओं

  • लागू अनुकूलन । एक आम इस्तेमाल किया अनुकूलन है पद प्रशिक्षण परिमाणीकरण है, जो आगे सटीकता में कम से कम नुकसान के साथ अपने मॉडल विलंबता और आकार को कम कर सकते हैं।

  • जोड़े मेटाडाटा , जो जब उपकरणों पर मॉडल की तैनाती यह आसान मंच विशिष्ट आवरण कोड बनाने के लिए बनाता है।

रूपांतरण त्रुटियां

सामान्य रूपांतरण त्रुटियाँ और उनके समाधान निम्नलिखित हैं:

  • त्रुटि: Some ops are not supported by the native TFLite runtime, you can enable TF kernels fallback using TF Select. See instructions: <a href="https://www.tensorflow.org/lite/guide/ops_select">https://www.tensorflow.org/lite/guide/ops_select</a> TF Select ops: ..., .., ...

    समाधान: त्रुटि तब होती है जब आपके मॉडल में TF ऑप्स होते हैं जिनका संबंधित TFLite कार्यान्वयन नहीं होता है। आपके द्वारा इस हल कर सकते हैं TFLite मॉडल में TF सेशन का उपयोग कर (अनुशंसित)। आप केवल TFLite ऑप्स के साथ एक मॉडल उत्पन्न करना चाहते हैं, तो आप या तो में लापता TFLite सेशन के लिए एक अनुरोध में जोड़ सकते हैं Github मुद्दा # 21,526 (एक टिप्पणी छोड़ करता है, तो आपके अनुरोध पहले ही उल्लेख नहीं किया गया है) या TFLite सेशन बनाने खुद।

  • त्रुटि: .. is neither a custom op nor a flex op

    समाधान: यदि यह TF सेशन है:

कमांड लाइन टूल

यह अत्यधिक अनुशंसित है कि आप का उपयोग अजगर एपीआई , बजाय ऊपर सूचीबद्ध यदि संभव हो तो।

यदि आपने इस बात TensorFlow पिप से 2.x स्थापित , का उपयोग tflite_convert यदि आप है (: इस प्रकार आदेश स्रोत से TensorFlow 2.x स्थापित तो आप जगह ले सकता है ' tflite_convert ' के साथ ' bazel run //tensorflow/lite/python:tflite_convert -- 'निम्न अनुभागों में, और तुम गया है स्थापित TensorFlow 1.x (तब Github का उल्लेख संदर्भ , उदाहरण ))

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.

एक सहेजे गए मॉडल को परिवर्तित करना

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 लाइट दुभाषिया एक ग्राहक डिवाइस पर रन निष्कर्ष करने के लिए (जैसे मोबाइल, एम्बेडेड)।