Estás leyendo la publicación: Una guía de TensorLayer para un desarrollo eficiente del aprendizaje profundo
Crear un sistema funcional de aprendizaje profundo es una tarea difícil y que requiere mucho tiempo. Implica tareas que consumen mucho tiempo, como la creación de redes neuronales sofisticadas, la coordinación de muchos modelos de red, el procesamiento de datos, la creación de un flujo de trabajo sucinto y el manejo de un volumen significativo de datos relacionados con la capacitación. Actualmente hay herramientas disponibles para ayudar en este proceso de desarrollo, como Keras y TFLearn, que brindan flexibilidad y abstracción para múltiples modalidades conectadas. En esta publicación, veremos TensorLayer, una herramienta de aprendizaje automático basada en Python. A continuación se enumeran los puntos principales que se discutirán en esta publicación.
Tabla de contenido
- Comprender la necesidad de la biblioteca.
- ¿Qué es TensorLayer?
- Detalles técnicos
- Implementación con TensorLayer
Primero comprendamos la necesidad de esta herramienta.
Comprender la necesidad de la biblioteca.
La creciente interacción desafía el desarrollo del aprendizaje profundo. Los desarrolladores deben pasar muchos ciclos integrando componentes para experimentar con redes neuronales, manejar etapas intermedias de entrenamiento, organizar datos relacionados con el entrenamiento y permitir el ajuste de hiperparámetros en reacción a varios eventos.
Para reducir el número de ciclos necesarios, se utiliza un método de desarrollo integrador, en el que las operaciones complejas sobre redes neuronales, estados, datos e hiperparámetros se abstraen y se dan en módulos complementarios. Esto da como resultado un entorno único en el que los desarrolladores pueden explorar conceptos de manera eficiente a través de operaciones de módulos de alto nivel y aplicar cambios a los módulos solo cuando sea necesario.
Esta estrategia no pretende crear un bloqueo de módulo. En cambio, los módulos se modelan como bloques simples de una sola función que comparten una interfaz de interacción, lo que permite complementos fáciles de módulos definidos por el usuario.
¿Qué es TensorLayer?
TensorLayer es un esfuerzo de colaboración para lograr este objetivo. Es un kit de herramientas modular de Python que proporciona módulos simples para ayudar a los académicos e ingenieros a construir sistemas complicados de aprendizaje profundo. La implementación de TensorLayer está diseñada para ser rápida y escalable. TensorFlow se utiliza como motor de inferencia y entrenamiento distribuido.
La sobrecarga asociada con la delegación en TensorFlow es pequeña. TensorLayer también utiliza MongoDB como backend de almacenamiento. Para administrar datos de entrenamiento ilimitados, este backend se complementa con un controlador de flujo eficiente. Este controlador puede procesar por lotes los resultados de una consulta de conjunto de datos y generar tareas de entrenamiento por lotes según sea necesario para respaldar la automatización.
TensorLayer emplea GridFS como backend de blob y MongoDB como indexador de muestra para manejar de manera eficiente elementos de datos de gran tamaño, como videos. Por último, TensorLayer emplea una arquitectura pub-sub de agente para lograr un flujo de trabajo de entrenamiento asíncrono. Los agentes pueden instalarse en varios tipos de dispositivos y suscribirse a colas de tareas separadas. Estas colas se mantienen en un almacenamiento confiable para que las tareas fallidas se puedan reproducir automáticamente.
TensorLayer, a diferencia de otras herramientas basadas en TensorFlow como Keras y TFLearn, permite un control simple de bajo nivel sobre la ejecución de capas y redes neuronales. También incluye módulos adicionales de conjuntos de datos y flujos de trabajo, que alivian a los usuarios de las labores de preprocesamiento y posprocesamiento de datos, servicio de módulos y administración de datos que consumen mucho tiempo. Su interfaz de interacción de módulo unificado no invasivo acepta capas y redes importadas de Keras y TFLearn.
Detalles técnicos
Las funciones auxiliares incluyen proporcionar e importar implementaciones de capas, establecer redes neuronales, manejar estados involucrados en los ciclos de vida del modelo, producir conjuntos de datos en línea o fuera de línea y desarrollar un plan de capacitación paralelo. Capa, modelo, conjunto de datos y flujo de trabajo son los cuatro módulos que contienen estas funciones. Estos módulos se describen a su vez en las secciones siguientes. Los repasaremos uno por uno.
Módulo de capa
TensorLayer presenta un módulo de capas con implementaciones de referencia de una variedad de capas, incluidas CNN, RNN, abandono, normalización por lotes y muchas más. De manera similar a la Lasaña ampliamente utilizada, las capas se construyen para formar una red neuronal de manera declarativa. Para ayudar a los desarrolladores a compartir parámetros, cada capa recibe su propia clave. TensorFlow está a cargo de las redes. TensorLayer es una plataforma híbrida y distribuida que hereda de TensorFlow.
Módulo modelo
Los modelos son representaciones lógicas de unidades funcionales autónomas que se pueden entrenar, evaluar y desplegar en el campo. Cada modelo tiene su propia estructura de red. Pueden existir varias versiones o estados del modelo a lo largo del entrenamiento (es decir, pesos). Los estados persistentes, almacenados en caché y recargados son todos posibles.
Los eventos del modelo definidos por el usuario se pueden grabar con TensorLayer. Los pasos de entrenamiento, la velocidad de aprendizaje y la precisión se reflejan en las competiciones tradicionales. Se utilizan con frecuencia para diagnosticar un proceso de entrenamiento con el fin de habilitar el control de versiones del modelo y el aprendizaje interactivo, por ejemplo.
Módulo de conjunto de datos
El módulo de conjunto de datos es donde realiza un seguimiento de sus muestras de entrenamiento y predicciones. Se guardan en MongoDB como documentos. En cada documento se incluyen una clave única, una muestra, una etiqueta y etiquetas definidas por el usuario.
Las consultas declarativas que conllevan requisitos para etiquetar campos se utilizan para definir conjuntos de datos. Las consultas crean vistas de los datos subyacentes y no requieren almacenamiento adicional.
Los conjuntos de datos de transmisión general se utilizan para modelar los datos. Se asigna un controlador de flujo a cada conjunto de datos, que supervisa constantemente la disponibilidad de muestras y predicciones y, posteriormente, activa las actividades de capacitación adecuadas para ese conjunto de datos.
Módulo de flujo de trabajo
El módulo de flujo de trabajo facilita la construcción de operaciones de grupos modelo y sistemas de aprendizaje que utilizan bucles de retroalimentación asincrónicos. También es efectivo para sistemas cognitivos complicados con componentes que requieren entrenamiento. Por ejemplo, el creador de un sistema de subtítulos de imágenes [28] entrenó una CNN para captar el contexto de las imágenes antes de entrenar un decodificador RNN para generar descripciones basadas en el contexto detectado. Este ejemplo crea un plan de entrenamiento asíncrono de dos etapas que TensorLayer puede admitir.
Implementación con TensorLayer
En esta sección, realizaremos la clasificación de imágenes mediante el aprendizaje por transferencia. El modelo utilizado aquí es VGG16. Para realizar esta clasificación solo necesitamos instalar un paquete de capas tensoriales y el resto lo gestiona el paquete.
Ahora instalemos e importemos rápidamente las dependencias.
! pip install tensorlayer # ¡Se requieren interdependencias para el preprocesamiento de imágenes! pip install scipy==1.2.1 import numpy as np import tensorflow as tf import tensorlayer as tl from tensorlayer.models.imagenet_classes import class_names
Ahora lo primero es lo primero, el modelo se puede importar desde el paquete tensorlayer.model. Después de cargar el modelo, el código genera el resumen del modelo.
# obtener el modelo completo vgg = tl.models.vgg16(pretrained=True)
Aquí hay un resumen del modelo.
Ahora, a continuación, tenemos que cargar y preprocesar la imagen a medida que el modelo se ejecuta en configuraciones de imagen predefinidas.
#carga de imágenes, preprocesamiento img = tl.vis.read_image(‘/content/steam-train-rides-1570200690.jpg’) img = tl.prepro.imresize(img, (224, 224)).astype(np .float32) / 255
Aquí está la imagen que estamos alimentando.
Ahora procesaremos la imagen para la predicción.
#procesar la imagen al modelo y obtener salida de prueba = vgg(img, is_train=False) probs = tf.nn.softmax(salida)[0].numpy()
Los resultados se obtienen en forma de probabilidad de clases que se identifican en la imagen y se ordenan en orden decreciente.
# print result preds = (np.argsort(probs)[::-1])[0:5]
para q en preds: print(class_names[q]problemas[q])
Ultimas palabras
A lo largo de este artículo, hemos discutido TensorLayer, una biblioteca basada en Python que actúa como un puente. TensorLayer no solo proporciona una abstracción de capas de alto nivel como otras bibliotecas, sino también un flujo de trabajo integral que incluye preprocesamiento de datos enriquecidos, capacitación, posprocesamiento, módulos de servicio y administración de bases de datos, lo que permite a los desarrolladores crear un completo sistema de aprendizaje desde la fase experimental hasta el producto final.