¿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 comunicaciones.unity recursos.

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
Ejemplo de TensorFlow

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 dispositivos móviles. operating, y tiene varios contenedores en varios lenguajes 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 aprendizajes automáticos. algorithms al dar una gran cantidad de datos. Google vio que podía utilizar estas redes neuronales profundas para mejorar sus servicios:

  • Gmail
  • concurso de
  • 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 TensorFlow. architectura y cómo funciona TensorFlow.

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

Flujo tensor archiLa tecnología 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 of operaciones (llamadas Gráfico) que desea realizar en esa entrada. La entrada entra por un extremo y luego fluye a través de este sistema de múltiples operaciones y sale por el otro extremo como salida.

Es por eso que se llama TensorFlow porque el tensor 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 la GPU también era muy buena en matriz. operaciones y álgebra para que sean muy rápidos para realizar este tipo de cálculos. El aprendizaje profundo se basa en mucha multiplicación de matrices. TensorFlow es muy rápido para calcular la multiplicación de matrices porque está escrito en C++. Aunque está implementado en C++, se puede acceder a TensorFlow y controlarlo mediante otros lenguajes principalmente, 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, todos los operaLas operaciones se llevan a cabo 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 poblar el 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:

  • Fue hecho para ejecutarse en múltiples CPU o GPU e incluso en dispositivos móviles. operasistema de ting
  • La portabilidad del gráfico permite preservar los cálculos para uso inmediato o later usar. El gráfico se puede guardar para ejecutarlo 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 lleva la matemática. operación 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 ser accesible para todos. La biblioteca Tensorflow incorpora diferentes API para construir un aprendizaje profundo a escala architectura 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. Finalmente, Tensorflow está diseñado para implementarse.yed 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 están los algorithms apoyado 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. numbers juntos.

Durante el ejemplo, multiplicaremos X_1 y X_2 juntos. Tensorflow creará un nodo para conectar el 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.

Los cálculos funcionan en TensorFlow
Ejemplo de TensorFlow

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 que se agregará numbers 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 hace la multiplicación. operació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: Ejecute el operadesarrollo

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 se ejecute. operaciones en nuestro gráfico computacional llamando a la sesión. Para ejecutar el cálculo, necesitamos usar ejecutar.

cuando la adición operaCuando se ejecuta la operación, verá que necesita tomar los valores de los nodos X_1 y X_2, por lo que también necesitamos 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 código Python. 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) Ejecute el operadesarrollo

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

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]

Resumen

  • 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 lo utilizan principalmente académicos, nuevas empresas y grandes empresas. Google utiliza TensorFlow en casi todos los productos diarios de Google, incluido Gmail, Fotografía y Buscador de Google.
  • 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ápidamentewing En popularidad. Hoy en día, 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:

  1. Definir la variable
X_1 = tf.placeholder(tf.float32, name = "X_1")
X_2 = tf.placeholder(tf.float32, name = "X_2")
  1. Definir el cálculo
multiply = tf.multiply(X_1, X_2, name = "multiply")
  1. Ejecute el operadesarrollo
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:

  1. Crear los datos
import numpy as np
x_input = np.random.sample((1,2))
print(x_input)
  1. Crear el marcador de posición
x = tf.placeholder(tf.float32, shape=[1,2], name = 'X')
  1. Definir el método del conjunto de datos
dataset = tf.data.Dataset.from_tensor_slices(x)
  1. Crea la canalización
iterator = dataset.make_initializable_iterator() get_next = iterator.get_next()
  1. Ejecuta el programa
with tf.Session() as sess:  
sess.run(iterator.initializer, feed_dict={ x: x_input })  
print(sess.run(get_next))