¿Qué es TensorFlow? ¿Cómo funciona? Introducción & Architectura
Comencemos este tutorial con la introducción de TensorFlow:
¿Qué es TensorFlow?
TensorFlow es una plataforma de código abierto de un extremo a otro para crear aplicaciones de aprendizaje automático. Es una biblioteca matemática simbólica que utiliza flujo de datos y programación diferenciable para realizar diversas tareas enfocadas al entrenamiento e inferencia de redes neuronales profundas. Permite a los desarrolladores crear aplicaciones de aprendizaje automático utilizando diversas herramientas, bibliotecas y recursos comunitarios.
Actualmente, la biblioteca de aprendizaje profundo más famosa del mundo es TensorFlow de Google. El producto de Google utiliza el aprendizaje automático en todos sus productos para mejorar el motor de búsqueda, la traducción, los subtítulos de imágenes o las recomendaciones.
Ejemplo de TensorFlow
Para dar un ejemplo concreto, los usuarios de Google pueden experimentar una experiencia de búsqueda más rápida y refinada con IA. Si el usuario escribe una palabra clave en la barra de búsqueda, Google proporciona una recomendación sobre cuál podría ser la siguiente palabra.
![Ejemplo de TensorFlow](https://www.guru99.com/images/tensorflow/083018_0508_WhatisTenso1_v1.gif)
Google quiere utilizar el aprendizaje automático para aprovechar sus enormes conjuntos de datos y brindar a los usuarios la mejor experiencia. Tres grupos diferentes utilizan el aprendizaje automático:
- Investigadores
- Científicos de datos
- Programador
Todos pueden utilizar el mismo conjunto de herramientas para colaborar entre sí y mejorar su eficiencia.
Google no tiene cualquier dato; Tienen la computadora más grande del mundo, por lo que Tensor Flow fue construido a escala. TensorFlow es una biblioteca desarrollada por Google Brain Team para acelerar el aprendizaje automático y la investigación de redes neuronales profundas.
Fue creado para ejecutarse en múltiples CPU o GPU e incluso en sistemas operativos móviles, y tiene varios envoltorios en varios idiomas como Python, C++ or Java.
Historia de TensorFlow
Hace un par de años, el aprendizaje profundo comenzó a superar a todos los demás algoritmos de aprendizaje automático al proporcionar una gran cantidad de datos. Google vio que podía utilizar estas redes neuronales profundas para mejorar sus servicios:
- gmail
- Foto
- Motor de búsqueda de Google
Construyen un marco llamado Flujo tensor para permitir que investigadores y desarrolladores trabajen juntos en un modelo de IA. Una vez desarrollado y ampliado, permite que mucha gente lo utilice.
Se hizo público por primera vez a finales de 2015, mientras que la primera versión estable apareció en 2017. Es de código abierto bajo licencia Apache Open Source. Puedes usarlo, modificarlo y redistribuir la versión modificada pagando una tarifa sin pagar nada a Google.
A continuación, en este tutorial de aprendizaje profundo de TensorFlow, aprenderemos sobre la arquitectura de TensorFlow y cómo funciona.
Cómo funciona TensorFlow
TensorFlow le permite crear estructuras y gráficos de flujo de datos para definir cómo se mueven los datos a través de un gráfico tomando entradas como una matriz multidimensional llamada Tensor. Le permite construir un diagrama de flujo de operaciones que se pueden realizar en estas entradas, que va por un extremo y llega al otro extremo como salida.
TensorFlow Architectura
La arquitectura de Tensorflow funciona en tres partes:
- Preprocesamiento de los datos
- Construye el modelo
- Entrenar y estimar el modelo.
Se llama Tensorflow porque toma la entrada como una matriz multidimensional, también conocida como tensores. Puedes construir una especie de diagrama de flujo de operaciones (llamado Gráfico) que desea realizar en esa entrada. La entrada entra por un extremo, luego fluye a través de este sistema de operaciones múltiples y sale por el otro extremo como salida.
Es por eso que se llama TensorFlow porque el tensor entra, fluye a través de una lista de operaciones y luego sale por el otro lado.
¿Dónde se puede ejecutar Tensorflow?
hardware TensorFlow y Requisitos de Software se puede clasificar en
Fase de desarrollo: aquí es cuando entrenas el modo. La capacitación generalmente se realiza en su computadora de escritorio o portátil.
Fase de ejecución o fase de inferencia: una vez finalizado el entrenamiento, Tensorflow se puede ejecutar en muchas plataformas diferentes. Puedes ejecutarlo en
- Escritorio ejecutándose Windows, macOS o Linux
- La nube como servicio web
- Dispositivos móviles como iOS y Android
Puede entrenarlo en varias máquinas y luego ejecutarlo en una máquina diferente, una vez que tenga el modelo entrenado.
El modelo se puede entrenar y utilizar tanto en GPU como en CPU. Las GPU se diseñaron inicialmente para videojuegos. A finales de 2010, los investigadores de Stanford descubrieron que las GPU también eran muy buenas en operaciones matriciales y álgebra, por lo que las hacen muy rápidas para realizar este tipo de cálculos. El aprendizaje profundo se basa en gran medida en la multiplicación de matrices. TensorFlow es muy rápido en el cálculo de la multiplicación de matrices porque está escrito en C++. Aunque se implementa en C++, Se puede acceder a TensorFlow y controlarlo principalmente mediante otros lenguajes, Python.
Finalmente, una característica importante de TensorFlow es TensorBoard. El TensorTablero permite monitorear gráfica y visualmente lo que está haciendo TensorFlow.
Componentes de TensorFlow
tensor
El nombre de Tensorflow se deriva directamente de su marco central: tensor. En Tensorflow, todos los cálculos involucran tensores. Un tensor es un vector or matriz de n dimensiones que representa todo tipo de datos. Todos los valores de un tensor contienen tipos de datos idénticos con un valor conocido (o parcialmente conocido). dar forma a. La forma de los datos es la dimensionalidad de la matriz o matriz.
Un tensor puede originarse a partir de los datos de entrada o del resultado de un cálculo. En TensorFlow, todas las operaciones se realizan dentro de un gráfica. El gráfico es un conjunto de cálculos que se realizan sucesivamente. Cada operación se llama nodo operativo y están conectados entre sí.
El gráfico describe las operaciones y conexiones entre los nodos. Sin embargo, no muestra los valores. El borde de los nodos es el tensor, es decir, una forma de completar la operación con datos.
Gráficos
TensorFlow utiliza un marco gráfico. El gráfico recoge y describe todos los cálculos en serie realizados durante el entrenamiento. El gráfico tiene muchas ventajas:
- Se hizo para ejecutarse en múltiples CPU o GPU e incluso en un sistema operativo móvil.
- La portabilidad del gráfico permite conservar los cálculos para su uso inmediato o posterior. El gráfico puede guardarse para ejecutarse en el futuro.
- Todos los cálculos en el gráfico se realizan conectando tensores entre sí.
- Un tensor tiene un nodo y una arista. El nodo realiza la operación matemática y produce salidas de puntos finales. Los bordes los bordes explican las relaciones de entrada/salida entre nodos.
¿Por qué es popular TensorFlow?
TensorFlow es la mejor biblioteca de todas porque está diseñada para que todos puedan acceder a ella. La biblioteca TensorFlow incorpora diferentes API para crear arquitecturas de aprendizaje profundo a escala, como CNN o RNN. TensorFlow se basa en el cálculo de gráficos; permite al desarrollador visualizar la construcción de la red neuronal con TensorBoad. Esta herramienta es útil para depurar el programa. Por último, TensorFlow está diseñado para implementarse a escala. Se ejecuta en CPU y GPU.
Tensorflow atrae la mayor popularidad en GitHub en comparación con otros marcos de aprendizaje profundo.
TensorFlow Algorithms
A continuación se muestran los algoritmos admitidos por TensorFlow:
Actualmente, TensorFlow 1.10 tiene una API integrada para:
- Regresión lineal: tf.estimator.LinearRegressor
- Clasificación:tf.estimator.LinearClassifier
- Clasificación de aprendizaje profundo: tf.estimator.DNNClassifier
- Borrado de aprendizaje profundo y profundo: tf.estimator.DNNLinearCombinedClassifier
- Regresión del árbol de refuerzo: tf.estimator.BoostedTreesRegressor
- Clasificación de árbol mejorada: tf.estimator.BoostedTreesClassifier
Cómo funcionan los cálculos en TensorFlow
import numpy as np import tensorflow as tf
En las dos primeras líneas de código, hemos importado tensorflow como tf. Con Python, es una práctica común utilizar un nombre corto para una biblioteca. La ventaja es evitar escribir el nombre completo de la biblioteca cuando necesitamos usarla. Por ejemplo, podemos importar tensorflow como tf y llamar a tf cuando queramos usar una función de tensorflow.
Practiquemos el flujo de trabajo elemental de Tensorflow con ejemplos simples de TensorFlow. Creemos un gráfico computacional que multiplique dos números.
Durante el ejemplo, multiplicaremos X_1 y X_2 juntos. Tensorflow creará un nodo para conectar la operación. En nuestro ejemplo, se llama multiplicar. Cuando se determina el gráfico, los motores computacionales de Tensorflow multiplicarán X_1 y X_2.
Finalmente, ejecutaremos una sesión de TensorFlow que ejecutará el gráfico computacional con los valores de X_1 y X_2 e imprimirá el resultado de la multiplicación.
Definamos los nodos de entrada X_1 y X_2. Cuando creamos un nodo en Tensorflow, tenemos que elegir qué tipo de nodo crear. Los nodos X1 y X2 serán un nodo marcador de posición. El marcador de posición asigna un nuevo valor cada vez que realizamos un cálculo. Los crearemos como un nodo marcador de posición de punto TF.
Paso 1: definir la variable
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
Cuando creamos un nodo de marcador de posición, tenemos que pasar el tipo de datos y agregaremos números aquí para que podamos usar un tipo de datos de punto flotante, usemos tf.float32. También debemos darle un nombre a este nodo. Este nombre aparecerá cuando miremos las visualizaciones gráficas de nuestro modelo. Llamemos a este nodo X_1 pasando un parámetro llamado nombre con un valor de X_1 y ahora definamos X_2 de la misma manera. X_2.
Paso 2: definir el cálculo
multiply = tf.multiply(X_1, X_2, name = "multiply")
Ahora podemos definir el nodo que realiza la operación de multiplicación. En Tensorflow podemos hacerlo creando un nodo tf.multiply.
Pasaremos los nodos X_1 y X_2 al nodo de multiplicación. Le dice a tensorflow que vincule esos nodos en el gráfico computacional, por lo que le pedimos que extraiga los valores de xey y multiplique el resultado. También le daremos al nodo de multiplicación el nombre de multiplicar. Es la definición completa de nuestro gráfico computacional simple.
Paso 3: ejecutar la operación
Para ejecutar operaciones en el gráfico, tenemos que crear una sesión. En Tensorflow, lo hace tf.Session(). Ahora que tenemos una sesión, podemos pedirle que ejecute operaciones en nuestro gráfico computacional llamando a la sesión. Para ejecutar el cálculo, necesitamos usar ejecutar.
Cuando se ejecute la operación de suma, verá que necesita tomar los valores de los nodos X_1 y X_2, por lo que también debemos introducir valores para X_1 y X_2. Podemos hacerlo proporcionando un parámetro llamado feed_dict. Pasamos el valor 1,2,3 para X_1 y 4,5,6 para X_2.
Imprimimos los resultados con print(resultado). Deberíamos ver 4, 10 y 18 para 1×4, 2×5 y 3×6
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2") multiply = tf.multiply(X_1, X_2, name = "multiply") with tf.Session() as session: result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]}) print(result)
[ 4. 10. 18.]
Opciones para cargar datos en TensorFlow
El primer paso antes de entrenar a un algoritmo de aprendizaje automático es cargar los datos. Hay dos formas comunes de cargar datos:
1. Cargar datos en la memoria: Es el método más sencillo. Carga todos sus datos en la memoria como una sola matriz. Puedes escribir un Python código. Estas líneas de código no están relacionadas con Tensorflow.
2. Canalización de datos de Tensorflow: Tensorflow tiene una API incorporada que le ayuda a cargar los datos, realizar la operación y alimentar el algoritmo de aprendizaje automático fácilmente. Este método funciona muy bien, especialmente cuando tienes un conjunto de datos grande. Por ejemplo, se sabe que los registros de imágenes son enormes y no caben en la memoria. La canalización de datos gestiona la memoria por sí misma.
¿Qué solución utilizar?
Cargar datos en la memoria
Si su conjunto de datos no es demasiado grande, es decir, menos de 10 gigabytes, puede utilizar el primer método. Los datos pueden caber en la memoria. Puedes utilizar una biblioteca famosa llamada Pandas para importar archivos CSV. Aprenderás más sobre los pandas en el próximo tutorial.
Cargar datos con la canalización de Tensorflow
El segundo método funciona mejor si tiene un conjunto de datos grande. Por ejemplo, si tiene un conjunto de datos de 50 gigabytes y su computadora tiene solo 16 gigabytes de memoria, la máquina fallará.
En esta situación, necesita crear una canalización de Tensorflow. La canalización cargará los datos en lotes o en fragmentos pequeños. Cada lote será enviado a la tubería y estará listo para la capacitación. Construir una tubería es una solución excelente porque le permite utilizar computación paralela. Significa que Tensorflow entrenará el modelo en múltiples CPU. Fomenta la computación y permite entrenar poderosas redes neuronales.
En los próximos tutoriales verá cómo construir un canal importante para alimentar su red neuronal.
En pocas palabras, si tiene un conjunto de datos pequeño, puede cargar los datos en la memoria con la biblioteca Pandas.
Si tiene un conjunto de datos grande y desea utilizar varias CPU, se sentirá más cómodo trabajando con la canalización de Tensorflow.
Cómo crear una canalización de TensorFlow
Estos son los pasos para crear una canalización de TensorFlow:
En el ejemplo anterior, agregamos manualmente tres valores para X_1 y X_2. Ahora veremos cómo cargar datos en Tensorflow:
Paso 1) Crea los datos
En primer lugar, usemos la biblioteca numpy para generar dos valores aleatorios.
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
[[0.8835775 0.23766977]]
Paso 2) Crea el marcador de posición
Como en el ejemplo anterior, creamos un marcador de posición con el nombre X. Necesitamos especificar explícitamente la forma del tensor. En este caso, cargaremos una matriz con solo dos valores. Podemos escribir la forma como forma=[1,2]
# using a placeholder x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
Paso 3) Definir el método del conjunto de datos
A continuación, debemos definir el conjunto de datos donde podemos completar el valor del marcador de posición x. Necesitamos usar el método tf.data.Dataset.from_tensor_slices
dataset = tf.data.Dataset.from_tensor_slices(x)
Paso 4) Crear la canalización
En el paso cuatro, necesitamos inicializar la tubería por donde fluirán los datos. Necesitamos crear un iterador con make_initializable_iterator. Lo llamamos iterador. Luego necesitamos llamar a este iterador para alimentar el siguiente lote de datos, get_next. A este paso lo llamamos get_next. Tenga en cuenta que en nuestro ejemplo, solo hay un lote de datos con solo dos valores.
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
Paso 5) Ejecutar la operación
El último paso es similar al ejemplo anterior. Iniciamos una sesión y ejecutamos el iterador de operaciones. Alimentamos el feed_dict con el valor generado por numpy. Estos dos valores llenarán el marcador de posición x. Luego ejecutamos get_next para imprimir el resultado.
with tf.Session() as sess: # feed the placeholder with data sess.run(iterator.initializer, feed_dict={ x: x_input }) print(sess.run(get_next)) # output [ 0.52374458 0.71968478]
[0.8835775 0.23766978]
Resum
- Significado de TensorFlow: TensorFlow Es la biblioteca de aprendizaje profundo más famosa de los últimos años. Un profesional que utilice TensorFlow puede crear cualquier estructura de aprendizaje profundo, como CNN, RNN o una simple red neuronal artificial.
- TensorFlow es utilizado principalmente por académicos, empresas emergentes y grandes empresas. Google utiliza TensorFlow en casi todos los productos de uso diario de Google, incluidos Gmail, Fotos y Google Search Engine.
- El equipo de Google Brain desarrolló TensorFlow para llenar el vacío entre investigadores y desarrolladores de productos. En 2015, hicieron pública TensorFlow; su popularidad está creciendo rápidamente. Actualmente, TensorFlow es la biblioteca de aprendizaje profundo con más repositorios en GitHub.
- Los profesionales utilizan Tensorflow porque es fácil de implementar a escala. Está diseñado para funcionar en la nube o en dispositivos móviles como iOs y Android.
Tensorflow funciona en una sesión. Cada sesión está definida por un gráfico con diferentes cálculos. Un ejemplo sencillo puede ser multiplicar por un número. En Tensorflow, se requieren tres pasos:
- Definir la variable
X_1 = tf.placeholder(tf.float32, name = "X_1") X_2 = tf.placeholder(tf.float32, name = "X_2")
- Definir el cálculo
multiply = tf.multiply(X_1, X_2, name = "multiply")
- Ejecutar la operación
with tf.Session() as session: result = session.run(multiply, feed_dict={X_1:[1,2,3], X_2:[4,5,6]}) print(result)
Una práctica común en Tensorflow es crear una canalización para cargar los datos. Si sigue estos cinco pasos, podrá cargar datos en TensorFLow:
- Crear los datos
import numpy as np x_input = np.random.sample((1,2)) print(x_input)
- Crear el marcador de posición
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
- Definir el método del conjunto de datos
dataset = tf.data.Dataset.from_tensor_slices(x)
- Crea la canalización
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
- Ejecuta el programa
with tf.Session() as sess: sess.run(iterator.initializer, feed_dict={ x: x_input }) print(sess.run(get_next))