Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/es-419/lite/models/convert/convert_models.md
25118 views

Convertir modelos TensorFlow

Esta página describe cómo convertir un modelo TensorFlow en un modelo TensorFlow Lite (un formato optimizado FlatBuffer identificado por la extensión de archivo .tflite) usando el conversor de TensorFlow Lite.

Nota: Esta guía asume que usted ha instalado TensorFlow 2.x y entrenado modelos en TensorFlow 2.x. Si su modelo está entrenado en TensorFlow 1.x, considere migrar a TensorFlow 2.x. Para identificar la versión de TensorFlow instalada, ejecute print(tf.__version__).

Flujo de trabajo de conversión

El diagrama siguiente ilustra el flujo de trabajo de alto nivel para convertir su modelo:

Flujo de trabajo del convertidor de TFLite

Figura 1. Flujo de trabajo del convertidor.

Puede convertir su modelo usando una de las siguientes opciones:

  1. API de Python (recomendada): Esto le permite integrar la conversión en su flujo de desarrollo, aplicar optimizaciones, añadir metadatos y muchas otras tareas que simplifican el proceso de conversión.

  2. Línea de comandos: Sólo admite la conversión básica de modelos.

Nota: En caso de que encuentre algún problema durante la conversión del modelo, cree un GitHub issue.

API de Python

Código ayudante: Para obtener más información sobre la API del conversor TensorFlow Lite, ejecute print(help(tf.lite.TFLiteConverter)).

Convierta un modelo TensorFlow usando tf.lite.TFLiteConverter. Un modelo TensorFlow se almacena usando el formato SavedModel y se genera bien usando las APIs de alto nivel tf.keras.* (un modelo Keras) o las APIs de bajo nivel tf.* (a partir de las cuales genera funciones concretas). Resultan las tres opciones siguientes (encontrará ejemplos en las próximas secciones):

  • tf.lite.TFLiteConverter.from_saved_model() (recomendado): Convierte un SavedModel.

  • tf.lite.TFLiteConverter.from_keras_model(): Convierte un modelo Keras.

  • tf.lite.TFLiteConverter.from_concrete_functions(): Convierte funciones concretas.

Convert a SavedModel (recomendado)

El siguiente ejemplo muestra cómo convertir un SavedModel en un modelo TensorFlow Lite.

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)

Convertir un modelo Keras

El siguiente ejemplo muestra cómo convertir un modelo Keras en un modelo TensorFlow Lite.

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)

Convertir funciones concretas

El siguiente ejemplo muestra cómo convertir funciones concretas en un modelo TensorFlow Lite.

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)

Otras características

  • Aplique optimizaciones. Una optimización comúnmente usada es la cuantización posterior al entrenamiento, que puede reducir aún más la latencia y el tamaño de su modelo con una pérdida mínima de precisión.

  • Añada metadatos, lo que facilita la creación de código contenedor específico de la plataforma al implementar modelos en dispositivos.

Errores de conversión

A continuación se indican los errores de conversión más comunes y sus soluciones:

Herramienta de línea de comandos

Nota: Se recomienda especialmente usar en su lugar, si es posible, la API de Python indicada anteriormente.

Si ha instalado TensorFlow 2.x desde pip, use el comando tflite_convert. Para ver todos los Indicadores disponibles, use el siguiente comando:

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

Si usted tiene la fuente TensorFlow 2.x descargada y desea ejecutar el convertidor desde esa fuente sin compilar e instalar el paquete, puede reemplazar 'tflite_convert' por 'bazel run tensorflow/lite/python:tflite_convert --' en el comando.

Convertir un SavedModel

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

Conversión de un modelo Keras H5

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

Siguientes pasos

Usar el intérprete TensorFlow Lite para ejecutar la inferencia en un dispositivo cliente (por ejemplo, móvil, integrado).