Path: blob/master/site/es-419/model_optimization/guide/clustering/clustering_example.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Ejemplo de agrupación de pesos en Keras
Descripción general
Le damos la bienvenida al ejemplo de principio a fin de agrupación de pesos, que forma parte del kit de herramientas de optimización de modelos de TensorFlow.
Otras paginas
Para obtener una introducción a qué es la agrupación de pesos y determinar si debe usarla (incluido lo que se admite), consulte la página de descripción general.
Para encontrar rápidamente las API que necesita para su caso de uso (más allá de agrupar completamente un modelo con 16 clústeres), consulte la guía completa.
Contenido
En este tutorial podrá:
Entrenar un modelo
tf.keras
para el conjunto de datos MNIST desde cero.Ajustar el modelo aplicando la API de agrupación de pesos y ver la precisión.
Crear modelos de TF y TFLite 6 veces más pequeños a partir de la agrupación.
Crear un modelo TFLite 8 veces más pequeño combinando la agrupación de pesos y la cuantización posentrenamiento.
Ver la persistencia de la precisión desde TF a TFLite.
Preparación
Puede ejecutar este cuaderno Jupyter en su virtualenv o colab local. Para obtener detalles sobre la configuración de dependencias, consulte la guía de instalación.
Entrenar un modelo tf.keras para MNIST sin agrupación
Evaluar el modelo previsto y guardarlo para usarlo después
Ajustar el modelo preentrenado con agrupación
Aplique la API cluster_weights()
a todo un modelo preentrenado para demostrar su eficacia a la hora de reducir el tamaño del modelo después de aplicar la compresión y conservar una precisión aceptable. Para saber cuál es la mejor manera de equilibrar la precisión y la tasa de compresión para su caso de uso, consulte el ejemplo por capa en la guía completa.
Definir el modelo y aplicar la API de agrupación
Antes de pasar el modelo a la API de agrupación, asegúrese de que esté entrenado y muestre una precisión aceptable.
Ajustar el modelo y evaluar la precisión con respecto a la línea de base
Ajuste el modelo con agrupación durante 1 época.
Para este ejemplo, hay una pérdida mínima en la precisión de la prueba después de la agrupación, en comparación con la línea de base.
Crear modelos 6 veces más pequeños a partir de agrupaciones
Tanto strip_clustering
como la aplicación de un algoritmo de compresión estándar (por ejemplo, mediante gzip) son necesarios para ver los beneficios de la compresión de la agrupación.
Primero, cree un modelo comprimible para TensorFlow. Aquí, strip_clustering
elimina todas las variables (por ejemplo tf.Variable
para almacenar los centroides y los índices de clúster) que la agrupación solo necesita durante el entrenamiento, que de otro modo aumentarían el tamaño del modelo durante la inferencia.
Luego, cree modelos comprimibles para TFLite. Puede convertir el modelo agrupado a un formato que se pueda ejecutar en su backend de destino. TensorFlow Lite es un ejemplo que se puede usar para implementar en dispositivos móviles.
Defina una función ayudante para comprimir los modelos mediante gzip y medir el tamaño comprimido.
Compare y vea que los modelos son 6 veces más pequeños a aprtir de la agrupación
Crear un modelo TFLite 8 veces más pequeño combinando la agrupación de pesos y la cuantización posentrenamiento
Puede aplicar la cuantización posentrenamiento al modelo agrupado para obtener beneficios adicionales.
Ver la persistencia de la precisión desde TF a TFLite
Defina una función ayudante para evaluar el modelo de TFLite en el conjunto de datos de prueba.
Evalúe el modelo, que ha sido agrupado y cuantizado, y luego vea que la precisión de TensorFlow persiste en el backend de TFLite.
Conclusión
En este tutorial, vio cómo crear modelos agrupados con la API del kit de herramientas de optimización de modelos de TensorFlow. Más específicamente, ha analizado un ejemplo de principio a fin para crear un modelo 8 veces más pequeño para MNIST con una diferencia de precisión mínima. Le recomendamos que pruebe esta nueva capacidad, que puede ser particularmente importante para la implementación en entornos con recursos limitados.