¿Qué es TensorFlow? Introducción, arquitectura y ejemplo

¿Qué es TensorFlow?

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.

Para dar un ejemplo concreto, los usuarios de Google pueden experimentar una búsqueda más rápida y más refinada con AI. Si el usuario escribe una palabra clave en la barra de búsqueda, Google ofrece una recomendación sobre cuál podría ser la siguiente palabra.

Google quiere utilizar el aprendizaje automático para aprovechar sus conjuntos de datos masivos para ofrecer a los usuarios la mejor experiencia posible. Tres grupos diferentes utilizan el aprendizaje automático:

  • Investigadores
  • Científicos de datos
  • Programadores.

Todos pueden utilizar el mismo conjunto de herramientas para colaborar entre sí y mejorar su eficiencia.

Google no solo tiene datos, sino que tiene la computadora más masiva del mundo, por lo que Tensor Flow fue construido a escala. TensorFlow es una biblioteca desarrollada por el equipo de Google Brain para acelerar el aprendizaje automático y la investigación de redes neuronales profundas.

Fue construido para ejecutarse en múltiples CPU o GPU e incluso sistemas operativos móviles, y tiene varios envoltorios en varios idiomas como Python, C++ o Java.

En este tutorial, aprenderá

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 dar una gran cantidad de datos. Google vio que podía usar estas redes neuronales profundas para mejorar sus servicios:

  • Gmail
  • Foto
  • Motor de búsqueda de Google

Construyen un marco llamado Tensorflow para permitir que investigadores y desarrolladores trabajen juntos en un modelo de IA. Una vez desarrollado y escalado, permite a mucha gente usarlo.

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 por una tarifa sin pagar nada a Google.

Arquitectura TensorFlow

La arquitectura de Tensorflow funciona en tres partes:

  • Procesamiento previo de los datos
  • Construir el modelo
  • Entrenar y estimar el modelo

Se llama Tensorflow porque toma entrada como una matriz multidimensional, también conocida como tensores. Puede construir una especie de diagrama de flujo de operaciones (llamado Graph) que desea realizar en esa entrada. La entrada entra en un extremo, y luego fluye a través de este sistema de múltiples operaciones y sale el otro extremo como salida.

Esta es la razón por la que se llama TensorFlow porque el tensor entra en él fluye a través de una lista de operaciones, y luego sale del otro lado.

¿Dónde puede correr Tensorflow?

TensorFlow puede hardware, y los requisitos de software se pueden clasificar en

Fase de desarrollo: Esto es cuando entrenas el modo. El entrenamiento 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. Puede ejecutarlo en

  • Escritorio con Windows, macOS o Linux
  • Cloud como servicio web
  • Dispositivos móviles como iOS y Android

Puede entrenarlo en varias máquinas y luego puede ejecutarlo en una máquina diferente, una vez que tenga el modelo entrenado.

El modelo puede ser entrenado y utilizado en GPU, así como CPU. Las GPU fueron diseñadas inicialmente para videojuegos. A finales de 2010, los investigadores de Stanford encontraron que la GPU también era muy bueno en las operaciones de matriz y álgebra por lo que los hace muy rápido para hacer este tipo de cálculos. El aprendizaje profundo depende de una gran cantidad de multiplicación matricial. TensorFlow es muy rápido en calcular la multiplicación de la matriz porque está escrito en C ++. Aunque se implementa en C ++, TensorFlow puede ser accedido y controlado por otros lenguajes principalmente, Python.

Finalmente, una característica significativa de TensorFlow es el TensorBoard. El TensorBoard permite monitorizar gráfica y visualmente lo que TensorFlow está haciendo.

Introducción a los componentes de TensorFlow

Tensor

El nombre de Tensorflow se deriva directamente de su marco principal: Tensor. En Tensorflow, todos los cálculos involucran tensores. Un tensor es un vector o matriz de n-dimensiones que representa todos los tipos de datos. Todos los valores de un tensor contienen un tipo de datos idéntico con una forma conocida (o parcialmente conocida). 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 llevan a cabo dentro de un gráfico. El gráfico es un conjunto de cálculo que tiene lugar sucesivamente. Cada operación se llama un nodo op y están conectados entre sí.

El gráfico describe las operaciones y las conexiones entre los nodos. Sin embargo, no muestra los valores. El borde de los nodos es el tensor, es decir, una forma de llenar la operación con datos.

Gráficos

TensorFlow hace uso de un marco gráfico. El gráfico recoge y describe todos los cálculos de series realizados durante el entrenamiento. El gráfico tiene muchas ventajas:

  • Se hizo para ejecutarse en múltiples CPU o GPU e incluso en el sistema operativo móvil
  • La portabilidad del gráfico permite conservar los cálculos para uso inmediato o posterior. El gráfico se puede guardar para ser ejecutado en el futuro.
  • Todos los cálculos en el gráfico se realizan conectando tensores juntos
  • Un tensor tiene un nodo y un borde. El nodo lleva la operación matemática y produce una salida de puntos finales. Los bordes de 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 ser accesible para todos. La biblioteca Tensorflow incorpora diferentes API para construir a escala profunda arquitectura de aprendizaje como CNN o RNN. TensorFlow se basa en el cálculo gráfico; permite al desarrollador visualizar la construcción de la red neuronal con Tensorboad. Esta herramienta es útil para depurar el programa. Finalmente, Tensorflow está diseñado para ser implementado a escala. Se ejecuta en CPU y GPU.

Tensorflow atrae la mayor popularidad en GitHub en comparación con el otro marco de aprendizaje profundo.

Lista de algoritmos prominentes soportados por TensorFlow

Actualmente, TensorFlow 1.10 tiene una API integrada para:

  • Regresión lineal: tf.estimator.linearRegresor
  • clasificación:tf.estimator.linearClassifier
  • Clasificación de aprendizaje profundo: TF.Estimator.DNNClassifier
  • Deep learning wipe and deep: tf.Estimator.dnnLinearCombinedClassifier
  • Regresión del árbol de refuerzo: TF.Estimator.BoostedTreesRegressor
  • Clasificación de árboles potenciados: TF.Estimator.BoostedTreesClassifier

Ejemplo simple de TensorFlow

En las dos primeras líneas de código, hemos importado tensorflow como tf. Con Python, es una práctica común usar 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 queremos usar una función tensorflow

Vamos a practicar el flujo de trabajo elemental de Tensorflow con un ejemplo simple. Vamos a crear un gráfico computacional que multiplica dos números juntos.

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 se multiplicarán juntos 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.

Vamos a definir 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 hacemos un cálculo. Vamos a crearlos como un nodo de marcador de posición de punto TF.

Paso 1: Definir la variable

Cuando creamos un nodo marcador de posición, tenemos que pasar el tipo de datos será la adición de números aquí para que podamos utilizar un tipo de datos de punto flotante, vamos a utilizar tf.float32. También necesitamos darle un nombre a este nodo. Este nombre aparecerá cuando veamos las visualizaciones gráficas de nuestro modelo. Vamos a nombrar este nodo X_1 pasando un parámetro llamado nombre con un valor de X_1 y ahora vamos a definir X_2 de la misma manera. X_2.

Paso 2: Definir el cálculo

Ahora podemos definir el nodo que hace la operación de multiplicación. En Tensorflow podemos hacer eso 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 estamos pidiendo que extraiga los valores de x e y y multiplique el resultado. También vamos a dar 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 a la sesión que ejecute operaciones en nuestro gráfico computacional llamando a sesión. Para ejecutar el cálculo, necesitamos usar run.

Cuando se ejecuta la operación de adición, va a ver que necesita tomar los valores de los nodos X_1 y X_2, por lo que también necesitamos alimentar valores para X_1 y X_2. Podemos hacerlo suministrando 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 impresión (resultado). Deberíamos ver 4, 10 y 18 para 1×4, 2×5 y 3×6

Opciones para cargar datos en TensorFlow

El primer paso antes de entrenar 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 simple. Carga todos los datos en la memoria como una sola matriz. Puede escribir un código Python. Estas líneas de código no están relacionadas con Tensorflow.
  1. Tubería 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 tiene un conjunto de datos grande. Por ejemplo, se sabe que los registros de imágenes son enormes y no encajan en la memoria. La canalización de datos administra la memoria por sí misma

¿Qué solución usar?

Cargar datos en la memoria

Si su conjunto de datos no es demasiado grande, es decir, menos de 10 gigabytes, puede usar el primer método. Los datos pueden caber en la memoria. Puede utilizar una famosa biblioteca llamada Pandas para importar archivos CSV. Usted aprenderá más acerca de los pandas en el siguiente tutorial.

Cargar datos con la tubería Tensorflow

El segundo método funciona mejor si tiene un dataset grande. Por ejemplo, si tiene un conjunto de datos de 50 gigabytes y su equipo tiene sólo 16 gigabytes de memoria, entonces la máquina se bloqueará.

En esta situación, debe construir una tubería Tensorflow. La canalización cargará los datos en lote, o pequeño fragmento. Cada lote será empujado a la tubería y estará listo para el entrenamiento. Construir una tubería es una solución excelente porque le permite usar computación paralela. Significa que Tensorflow entrenará el modelo a través de múltiples CPU. Fomenta el cálculo y permite el entrenamiento de la poderosa red neuronal.

Verá en los próximos tutoriales sobre cómo construir una tubería significativa 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 hacer uso de varias CPU, entonces será más cómodo trabajar con la canalización de Tensorflow.

Crear canalización Tensorflow

En el ejemplo anterior, agregamos manualmente tres valores para X_1 y X_2. Ahora veremos cómo cargar datos a Tensorflow.

Paso 1) Crear los datos

En primer lugar, usemos numpy library para generar dos valores aleatorios.

[[0.8835775 0.23766977]]

Paso 2: Crear el marcador de posición

Al igual que en el ejemplo anterior, creamos un marcador de posición con el nombre X. Necesitamos especificar la forma del tensor explícitamente. En caso de que, vamos a cargar una matriz con sólo dos valores. Podemos escribir la forma como forma= [1,2]

Paso 3: Definir el método del dataset

siguiente, tenemos que definir el conjunto de datos donde podemos llenar el valor del marcador de posición x Necesitamos utilizar el método tf.data.dataset.from_tensor_slices

Paso 4: Crear la canalización

En el paso cuatro, necesitamos inicializar la canalización donde fluirán los datos. Necesitamos crear un iterador con make_initializable_iterator. Lo nombramos iterador. Luego tenemos que llamar a este iterador para alimentar el siguiente lote de datos, get_next. Nombramos este paso get_next. Tenga en cuenta que en nuestro ejemplo, solo hay un lote de datos con solo dos valores.

Paso 5: Ejecutar la operación

El último paso es similar al ejemplo anterior. Iniciamos una sesión y ejecutamos el iterador de operación. 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.

Resumen

TensorFlow es la biblioteca de aprendizaje profundo más famosa en estos últimos años. Un practicante que usa TensorFlow puede construir cualquier estructura de aprendizaje profundo, como CNN, RNN o simple red neuronal artificial.

TensorFlow es utilizado principalmente por académicos, startups y grandes empresas. Google utiliza TensorFlow en casi todos los productos diarios de Google, incluyendo Gmail, Photo 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úblico TensorFlow; está creciendo rápidamente en popularidad. Hoy en día, TensorFlow es la biblioteca de aprendizaje profundo con la mayoría de repositorios en GitHub.

Los profesionales usan 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 se define mediante un gráfico con diferentes cálculos. Un ejemplo simple puede ser multiplicar a número. En Tensorflow, se requieren tres pasos:

1. Definir la variable

2. Definir el cálculo

3. Ejecutar la operación

Una práctica común en Tensorflow es crear una canalización para cargar los datos. Si sigues estos cinco pasos, podrás cargar datos en TensorFlow

1. Crear los datos


2. Crear el marcador de posición

3. Definir el método de dataset

4. Crear la canalización

5. Ejecutar el programa
0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *