
Libro de cocina de aprendizaje automático de TensorFlow
Un libro de publicación de Packt
Por Nick McClure
=================
Construir:
=================
Tabla de contenido
- CH 1: Comenzando con TensorFlow
- CH 2: The TensorFlow Way
- CH 3: regresión lineal
- CH 4: Máquinas vectoriales de soporte
- CH 5: Métodos vecinos más cercanos
- CH 6: Redes neuronales
- CH 7: Procesamiento del lenguaje natural
- CH 8: Redes neuronales convolucionales
- CH 9: Redes neuronales recurrentes
- CH 10: Llevar a TensorFlow a la producción
- CH 11: Más con flujo de tensor
CH 1: Comenzando con TensorFlow

Este capítulo tiene la intención de introducir los objetos y conceptos principales en TensorFlow. También presentamos cómo acceder a los datos para el resto del libro y proporcionamos recursos adicionales para aprender sobre TensorFlow.
- Esquema general de los algoritmos de TF
- Aquí presentamos TensorFlow y el esquema general de cómo funcionan la mayoría de los algoritmos de flujo tensor.
- Crear y usar tensores
- Cómo crear e inicializar tensores en TensorFlow. También representamos cómo aparecen estas operaciones en TensorBoard.
- Usar variables y marcadores de posición
- Cómo crear y usar variables y marcadores de posición en TensorFlow. También representamos cómo aparecen estas operaciones en TensorBoard.
- Trabajando con matrices
- Comprender cómo TensorFlow puede funcionar con las matrices es crucial para comprender cómo funcionan los algoritmos.
- Declarando operaciones
- Cómo usar varias operaciones matemáticas en TensorFlow.
- Implementación de funciones de activación
- Las funciones de activación son funciones únicas que TensorFlow ha incorporado para su uso en algoritmos.
- Trabajar con fuentes de datos
- Aquí mostramos cómo acceder a todas las diversas fuentes de datos requeridas en el libro. También hay enlaces que describen las fuentes de datos y de dónde vienen.
- Recursos adicionales
- Principalmente recursos y documentos oficiales. Los documentos son documentos de flujo de tensor o recursos de aprendizaje profundo.
CH 2: The TensorFlow Way

Después de haber establecido los objetos y métodos básicos en TensorFlow, ahora queremos establecer los componentes que constituyen los algoritmos de TensorFlow. Comenzamos introduciendo gráficos computacionales y luego pasamos a las funciones de pérdida y la propagación de la espalda. Terminamos creando un clasificador simple y luego mostramos un ejemplo de evaluación de algoritmos de regresión y clasificación.
- Una operación como gráfico computacional
- Mostramos cómo crear una operación en un gráfico computacional y cómo visualizarlo usando TensorBoard.
- Capas de operaciones anidadas
- Mostramos cómo crear múltiples operaciones en un gráfico computacional y cómo visualizarlas usando TensorBoard.
- Trabajando con múltiples capas
- Aquí extendemos el uso del gráfico computacional para crear múltiples capas y mostrar cómo aparecen en TensorBoard.
- Implementación de funciones de pérdida
- Para capacitar a un modelo, debemos poder evaluar qué tan bien está funcionando. Esto se da por funciones de pérdida. Trazamos varias funciones de pérdida y hablamos sobre los beneficios y limitaciones de algunos.
- Implementación de propagación de retroceso
- Aquí mostramos cómo usar funciones de pérdida para iterar a través de datos y propagar errores para la regresión y la clasificación.
- Trabajar con entrenamiento estocástico y por lotes
- TensorFlow facilita el uso de entrenamiento por lotes y estocásticos. Mostramos cómo implementar ambos y hablar sobre los beneficios y limitaciones de cada uno.
- Combinando todo juntos
- Ahora combinamos todo lo que hemos aprendido y creamos un clasificador simple.
- Evaluación de modelos
- Cualquier modelo es tan bueno como su evaluación. Aquí mostramos dos ejemplos de (1) evaluando un algoritmo de regresión y (2) un algoritmo de clasificación.
CH 3: regresión lineal

Aquí mostramos cómo implementar varias técnicas de regresión lineal en TensorFlow. Las primeras dos secciones muestran cómo hacer la resolución de regresión lineal de matriz estándar en TensorFlow. Las seis secciones restantes representan cómo implementar varios tipos de regresión utilizando gráficos computacionales en TensorFlow.
- Usando el método inverso de matriz
- Cómo resolver una regresión 2D con una matriz inversa en TensorFlow.
- Implementación de un método de descomposición
- Resolviendo una regresión lineal 2D con descomposición de Cholesky.
- Aprendiendo la forma de regresión lineal de TensorFlow
- Regresión lineal iterando a través de un gráfico computacional con pérdida de L2.
- Comprender las funciones de pérdida en la regresión lineal
- L2 VS L1 Pérdida en regresión lineal. Hablamos sobre los beneficios y limitaciones de ambos.
- Implementación de la regresión Deming (regresión total)
- Regresión Deming (total) implementada en TensorFlow cambiando la función de pérdida.
- Implementación de la regresión de Lasso y Ridge
- La regresión de lazo y la cresta son formas de regularizar los coeficientes. Implementamos ambos en TensorFlow al cambiar las funciones de pérdida.
- Implementación de la regresión neta elástica
- Elastic Net es una técnica de regularización que combina la pérdida de L2 y L1 para los coeficientes. Mostramos cómo implementar esto en TensorFlow.
- Implementación de regresión logística
- Implementamos la regresión logística mediante el uso de una función de activación en nuestro gráfico computacional.
CH 4: Máquinas vectoriales de soporte

Este capítulo muestra cómo implementar varios métodos SVM con TensorFlow. Primero creamos un SVM lineal y también mostramos cómo se puede usar para la regresión. Luego presentamos kernels (RBF Gaussian Kernel) y mostramos cómo usarlo para dividir datos no lineales. Terminamos con una implementación multidimensional de SVM no lineales para trabajar con múltiples clases.
- Introducción
- Presentamos el concepto de SVM y cómo lo implementaremos en el marco TensorFlow.
- Trabajando con SVM lineales
- Creamos un SVM lineal para separar I. setosa basado en la longitud sepal y el ancho del pedal en el conjunto de datos del iris.
- Reducción a la regresión lineal
- El corazón de SVMS está separando clases con una línea. Cambiamos el algoritmo ligeramente para realizar una regresión SVM.
- Trabajando con núcleos en TensorFlow
- Para extender las SVM a datos no lineales, explicamos y mostramos cómo implementar diferentes núcleos en TensorFlow.
- Implementación de SVM no lineales
- Usamos el núcleo gaussiano (RBF) para separar las clases no lineales.
- Implementación de SVM múltiples de clase
- Los SVM son predictores inherentemente binarios. Mostramos cómo extenderlos en una estrategia de un VS-All en TensorFlow.
CH 5: Métodos vecinos más cercanos

Los métodos vecinos más cercanos son un algoritmo ML muy popular. Mostramos cómo implementar vecinos K-Nears, vecinos más pesados K-Nears y vecinos más nears con funciones de distancia mixta. En este capítulo también mostramos cómo usar la distancia de Levenshtein (distancia de edición) en TensorFlow, y lo usamos para calcular la distancia entre cadenas. Terminamos este capítulo mostrando cómo usar vecinos K-Nears para la predicción categórica con el reconocimiento de dígitos escritos a mano MNIST.
- Introducción
- Presentamos los conceptos y métodos necesarios para realizar vecinos K-Nears en TensorFlow.
- Trabajando con vecinos más cercanos
- Creamos un algoritmo vecino más cercano que intenta predecir el valor de la vivienda (regresión).
- Trabajar con distancias basadas en texto
- Para usar una función de distancia en el texto, mostramos cómo usar distancias de edición en TensorFlow.
- Computación de funciones de distancia de mezcla
- Aquí implementamos escala de la función de distancia mediante la desviación estándar de la función de entrada para los vecinos K-nears.
- Uso de la coincidencia de la dirección
- Utilizamos una función de distancia mixta para coincidir con direcciones. Utilizamos la distancia numérica para códigos postales y la distancia de edición de cadena para los nombres de las calles. Los nombres de las calles pueden tener errores tipográficos.
- Usar vecinos más cercanos para el reconocimiento de imágenes
- La colección de imágenes MNIST Digit es un gran conjunto de datos para la ilustración de cómo realizar vecinos K-Nears más para una tarea de clasificación de imágenes.
CH 6: Redes neuronales

Las redes neuronales son muy importantes en el aprendizaje automático y el crecimiento de la popularidad debido a los principales avances en problemas previos sin resolver. Debemos comenzar con la introducción de redes neuronales 'poco profundas', que son muy poderosas y pueden ayudarnos a mejorar nuestros resultados de algoritmo ML anteriores. Comenzamos introduciendo la unidad NN muy básica, la puerta operativa. Poco a poco agregamos cada vez más a la red neuronal y terminamos con el entrenamiento de un modelo para jugar Tic-Tac-Toe.
- Introducción
- Presentamos el concepto de redes neuronales y cómo se construye TensorFlow para manejar fácilmente estos algoritmos.
- Implementación de puertas operativas
- Implementamos una puerta operativa con una operación. Luego mostramos cómo extender esto a múltiples operaciones anidadas.
- Trabajar con puertas y funciones de activación
- Ahora tenemos que introducir funciones de activación en las puertas. Mostramos cómo operan diferentes funciones de activación.
- Implementación de una red neuronal de una capa
- Tenemos todas las piezas para comenzar a implementar nuestra primera red neuronal. Lo hacemos aquí con regresión en el conjunto de datos de Iris.
- Implementación de diferentes capas
- Esta sección introduce la capa de convolución y la capa máxima de putos. Mostramos cómo encadenarlos en un ejemplo 1D y 2D con capas totalmente conectadas también.
- Uso de redes neuronales de múltiples capas
- Aquí mostramos cómo funcionalizar diferentes capas y variables para una red neuronal de múltiples capas más limpia.
- Mejora de las predicciones de modelos lineales
- Mostramos cómo podemos mejorar la convergencia de nuestra regresión logística previa con un conjunto de capas ocultas.
- Aprendiendo a jugar tic-tac-toe
- Dado un conjunto de tableros de tic-tac-toe y movimientos óptimos correspondientes, entrenamos un modelo de clasificación de red neuronal para jugar. Al final del guión, puedes intentar jugar contra el modelo entrenado.
CH 7: Procesamiento del lenguaje natural

El procesamiento del lenguaje natural (PNL) es una forma de procesar información textual en resúmenes, características o modelos numéricos. En este capítulo motivaremos y explicaremos cómo lidiar mejor con el texto en TensorFlow. Mostramos cómo implementar el clásico 'bolso de palabras' y mostramos que puede haber mejores formas de incrustar el texto basado en el problema en cuestión. Hay incrustaciones de redes neuronales llamadas Word2Vec (CBOW y Skip-Gram) y DOC2VEC. Mostramos cómo implementar todos estos en TensorFlow.
- Introducción
- Introducimos métodos para convertir el texto en vectores numéricos. También presentamos la función de 'incrustación' de TensorFlow.
- Trabajando con la bolsa de palabras
- Aquí usamos TensorFlow para hacer una palabra única de palabras llamadas bolsas de palabras. Utilizamos este método y regresión logística para predecir si un mensaje de texto es spam o jamón.
- Implementación de TF-IDF
- Implementamos frecuencia de texto: frecuencia de documentos inversos (TFIDF) con una combinación de aprendizaje Sci -kit y tensorflow. Realizamos una regresión logística en los vectores TFIDF para mejorar nuestras predicciones de mensajes de texto de spam/jamón.
- Trabajando con Skip-Gram
- Nuestra primera implementación de Word2Vec llamada "Skip-gram" en una base de datos de revisión de películas.
- Trabajando con CBOW
- A continuación, implementamos una forma de Word2Vec llamada "CBOW" (bolsa continua de palabras) en una base de datos de revisión de películas. También presentamos método para guardar y cargar incrustaciones de palabras.
- Implementación de Word2Vec Ejemplo
- En este ejemplo, utilizamos las incrustaciones de palabras de CBOW guardadas anteriores para mejorar nuestra regresión logística de TF-IDF del sentimiento de revisión de la película.
- Realización de análisis de sentimientos con DOC2VEC
- Aquí, presentamos un método DOC2VEC (concatenación de DOC e incrustaciones de palabras) para mejorar el modelo logístico del sentimiento de revisión de películas.
CH 8: Redes neuronales convolucionales

Las redes neuronales convolucionales (CNN) son formas de lograr que las redes neuronales sean con los datos de imágenes. CNN deriva su nombre del uso de una capa convolucional que aplica un filtro de tamaño fijo en una imagen más grande, reconociendo un patrón en cualquier parte de la imagen. Hay muchas otras herramientas que usan (poloquero, abandono, etc.) que mostramos cómo implementar con TensorFlow. También mostramos cómo volver a entrenar una arquitectura existente y llevar a CNNS aún más con Stylenet y Dream Dream.
- Introducción
- Introducimos redes neuronales convolucionales (CNN) y cómo podemos usarlas en TensorFlow.
- Implementación de un CNN simple.
- Aquí, mostramos cómo crear una arquitectura CNN que funcione bien en la tarea de reconocimiento de dígitos MNIST.
- Implementación de un CNN avanzado.
- En este ejemplo, mostramos cómo replicar una arquitectura para la tarea de reconocimiento de imágenes CIFAR-10.
- Reentrenamiento de una arquitectura existente.
- Mostramos cómo descargar y configurar los datos CIFAR-10 para el tutorial de reentrenamiento/ajuste de tensorflow.
- Usando Stylenet/NeuralStyle.
- En esta receta, mostramos una implementación básica del uso de Stylenet o NeuralStyle.
- Implementación de un sueño profundo.
- Este guión muestra una explicación de línea por línea del tutorial DeepDream de TensorFlow. Tomado de DeepDream en TensorFlow. Tenga en cuenta que el código aquí se convierte a Python 3.
CH 9: Redes neuronales recurrentes

Las redes neuronales recurrentes (RNN) son muy similares a las redes neuronales regulares, excepto que permiten conexiones 'recurrentes' o bucles que dependen de los estados anteriores de la red. Esto permite que los RNN sean de manera eficiente con datos secuenciales, mientras que otros tipos de redes no pueden. Luego motivamos el uso de las redes LSTM (memoria a corto plazo a corto plazo) como una forma de abordar los problemas regulares de RNN. Luego mostramos lo fácil que es implementar estos tipos de RNN en TensorFlow.
- Introducción
- Introducimos redes neuronales recurrentes y cómo pueden alimentarse en una secuencia y predecir un objetivo fijo (categórico/numérico) u otra secuencia (secuencia a secuencia).
- Implementación de un modelo RNN para la predicción de spam
- En este ejemplo, creamos un modelo RNN para mejorar nuestras predicciones de texto SMS de spam/jamón.
- Implementación de un modelo LSTM para la generación de texto
- Mostramos cómo implementar un RNN LSTM (memoria a largo plazo a corto plazo) para la generación de idiomas Shakespeare. (Vocabulario a nivel de palabras)
- Apilamiento de múltiples capas LSTM
- Apilamos múltiples capas LSTM para mejorar nuestra generación de idiomas Shakespeare. (Vocabulario a nivel de personaje)
- Creación de una secuencia al modelo de traducción de secuencia (SEQ2SEQ)
- Aquí, utilizamos los modelos de secuencia de secuencia de Tensorflow para entrenar un modelo de traducción alemán en inglés.
- Entrenamiento de una medida de similitud siamés
- Aquí, implementamos un RNN siamés para predecir la similitud de las direcciones y lo usamos para la coincidencia de registros. El uso de RNN para la coincidencia de registros es muy versátil, ya que no tenemos un conjunto fijo de categorías de destino y podemos usar el modelo capacitado para predecir similitudes en nuevas direcciones.
CH 10: Llevar a TensorFlow a la producción

Por supuesto, hay más en TensorFlow que solo crear y ajustar modelos de aprendizaje automático. Una vez que tenemos un modelo que queremos usar, tenemos que moverlo hacia el uso de la producción. Este capítulo proporcionará consejos y ejemplos de implementación de pruebas unitarias, utilizando múltiples procesadores, utilizando múltiples máquinas (TensorFlow distribuidas) y terminar con un ejemplo de producción completo.
- Implementación de pruebas unitarias
- Mostramos cómo implementar diferentes tipos de pruebas unitarias en tensores (marcadores de posición y variables).
- Uso de múltiples ejecutores (dispositivos)
- Cómo usar una máquina con múltiples dispositivos. Por ejemplo, una máquina con una CPU y una o más GPU.
- Paralelización de flujo tensor
- Cómo configurar y usar TensorFlow distribuido en múltiples máquinas.
- Consejos para TensorFlow en producción
- Varios consejos para desarrollar con TensorFlow
- Un ejemplo de producción de tensorflow de producción
- Mostramos cómo tomar el modelo RNN para predecir HAM/SPAM (del Capítulo 9, Receta #2) y ponerlo en dos archivos de nivel de producción: capacitación y evaluación.
CH 11: Más con flujo de tensor

Para ilustrar cuán versátil es TensorFlow, mostraremos ejemplos adicionales en este capítulo. Comenzamos mostrando cómo usar el TensorBoard de la herramienta de registro/visualización. Luego ilustramos cómo hacer la agrupación de K-means, usar un algoritmo genético y resolver un sistema de ODES.
- Visualización de gráficos computacionales (con Tensorboard)
- Un ejemplo de uso de histogramas, resúmenes escalares y creación de imágenes en TensorBoard.
- Trabajar con un algoritmo genético
- Creamos un algoritmo genético para optimizar a un individuo (matriz de 50 números) hacia la función de verdad del suelo.
- Agrupación usando k-means
- Cómo usar TensorFlow para agrupar K-Means. Usamos el conjunto de datos de Iris, establecemos K = 3 y usamos K-Means para hacer predicciones.
- Resolver un sistema de ODES
- Aquí, mostramos cómo usar TensorFlow para resolver un sistema de ODES. El sistema de preocupación es el sistema Lotka-Volterra Predator-Prey.
- Usando un bosque aleatorio
- Ilustramos cómo usar los árboles de regresión y clasificación de gradiente de TensorFlow.
- Usar TensorFlow con Keras
- Aquí mostramos cómo usar el edificio del modelo Keras Sequential para una red neuronal totalmente conectada y un modelo CNN con devoluciones de llamada.