Tutorial de TensorFlow: aprendizaje profundo con TensorFlow



El tutorial de TensorFlow es el tercer blog de la serie. Incluye todos los conceptos básicos de TensorFlow. También habla sobre cómo crear un modelo lineal simple.

Diseñé este tutorial de TensorFlow para profesionales y entusiastas que estén interesados ​​en aplicar el algoritmo de aprendizaje profundo usando TensorFlow para resolver varios problemas. TensorFlow es una biblioteca de aprendizaje profundo de código abierto que se basa en el concepto de gráficos de flujo de datos para crear modelos. Le permite crear redes neuronales a gran escala con muchas capas.Aprender el uso de esta biblioteca también es parte fundamental del .A continuación, se muestran los temas que se analizarán en este blog del tutorial de TensorFlow:

  • ¿Qué es TensorFlow?
  • Conceptos básicos del código de TensorFlow
  • TensorFlow UseCase

¿Qué son los tensores?

En este tutorial de TensorFlow, antes de hablar sobre TensorFlow, primero comprendamos que son los tensores . Los tensores no son más que un hecho para representar los datos en el aprendizaje profundo.





Tensores - Tutorial de TensorFlow - EdurekaComo se muestra en la imagen de arriba, los tensores son solo matrices multidimensionales, que le permiten representar datos que tienen dimensiones más altas. En general, Deep Learning se ocupa de conjuntos de datos de alta dimensión donde las dimensiones se refieren a diferentes características presentes en el conjunto de datos. De hecho, el nombre 'TensorFlow' se ha derivado de las operaciones que realizan las redes neuronales en los tensores. Es literalmente un flujo de tensores. Ya que ha entendido qué son los tensores, avancemos en este tutorial de TensorFlow y entendamos: ¿Qué es TensorFlow?

¿Qué es TensorFlow?

TensorFlow es una biblioteca basada en Python que proporciona diferentes tipos de funcionalidad para implementar modelos de aprendizaje profundo. Como se discutió anteriormente, el término TensorFlow se compone de dos términos: Tensor y Flow:



En TensorFlow, el término tensor se refiere a la representación de datos como una matriz multidimensional, mientras que el término flujo se refiere a la serie de operaciones que uno realiza en tensores como se muestra en la imagen de arriba.

Ahora hemos cubierto suficiente información sobre TensorFlow.



A continuación, en este tutorial de TensorFlow, analizaremos los conceptos básicos del código de TensorFlow.

cómo usar el método de recorte en java

Tutorial de TensorFlow: conceptos básicos del código

Básicamente, el proceso general de escritura de un programa de TensorFlow implica dos pasos:

  1. Construyendo un gráfico computacional
  2. Ejecución de un gráfico computacional

Déjame explicarte los dos pasos anteriores uno por uno:

1. Construyendo un gráfico computacional

Entonces, ¿Qué es un gráfico computacional? Bueno, un gráfico computacional es una serie de operaciones de TensorFlow organizadas como nodos en el gráfico. Cada nodo toma 0 o más tensores como entrada y produce un tensor como salida. Permítanme darles un ejemplo de un gráfico computacional simple que consta de tres nodos: a , b & c Como se muestra abajo:

Explicación del gráfico computacional anterior:

  • Nodos constantesse utilizan para almacenar valores constantes, ya que requiere entrada cero, pero produce los valores almacenados como salida. En el ejemplo anterior, a y b son nodos constantes con valores 5 y 6 respectivamente.

  • El nodo c representa la operación de multiplicar el nodo constante a por b. Por lo tanto, ejecutar el nodo c resultará en la multiplicación del nodo constante ay b.

Básicamente, uno puede pensar en un gráfico computacional como una forma alternativa de conceptualizar los cálculos matemáticos que tienen lugar en un programa de TensorFlow. Las operaciones asignadas a los diferentes nodos de un Gráfico Computacional se pueden realizar en paralelo, proporcionando así un mejor desempeño en términos de cómputos.

Aquí solo describimos el cálculo, no calcula nada, no contiene ningún valor, solo define las operaciones especificadas en su código.

2. Ejecución de un gráfico computacional

Tomemos el ejemplo anterior de gráfico computacional y entendamos cómo ejecutarlo. A continuación se muestra el código del ejemplo anterior:

Ejemplo 1:

importar tensorflow como tf # Construye un gráfico a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

Ahora, para obtener la salida del nodo c, necesitamos ejecutar el gráfico computacional dentro de un sesión . Session coloca las operaciones gráficas en dispositivos, como CPU o GPU, y proporciona métodos para ejecutarlas.

Una sesión encapsula el control y el estado del tiempo de ejecución de TensorFlow, es decir, almacena la información sobre el orden en el que se realizarán todas las operaciones y pasa el resultado de la operación ya calculada a la siguiente operación en la canalización. Permítanme mostrarles cómo ejecutar el gráfico computacional anterior dentro de una sesión (la explicación de cada línea de código se ha agregado como comentario):

# Crear el objeto de sesión sess = tf.Session () #Ejecutar el gráfico dentro de una sesión y almacenar el resultado en una variable output_c = sess.run (c) #Imprimir el resultado del nodo c print (output_c) #Cerrar la sesión para liberar algunos recursos sess.close ()
 Salida: 30

Entonces, se trataba de sesiones y ejecutar un gráfico computacional dentro de él. Ahora, hablemos de las variables y los marcadores de posición que usaremos de manera extensiva mientras construimos un modelo de aprendizaje profundo con TensorFlow.

Constantes, marcador de posición y variables

En TensorFlow, las constantes, los marcadores de posición y las variables se utilizan para representar diferentes parámetros de un modelo de aprendizaje profundo. Dado que ya he discutido las constantes anteriormente, comenzaré con marcadores de posición.

Marcador de posición:

Una constante de TensorFlow te permite almacenar un valor pero, ¿qué pasa si quieres que tus nodos tomen entradas sobre la marcha? Para este tipo de funcionalidad, se utilizan marcadores de posición que permiten que su gráfico tome entradas externas como parámetros. Básicamente, un marcador de posición es una promesa de proporcionar un valor más tarde o durante el tiempo de ejecución. Déjame darte un ejemplo para simplificar las cosas:

import tensorflow as tf # Creando marcadores de posición a = tf. marcador de posición (tf.float32) b = tf. placeholder (tf.float32) # Asignación de la operación de multiplicación w.r.t. a & ampamp b al nodo mul mul = a * b # Crear objeto de sesión sess = tf.Session () # Ejecutar mul pasando los valores [1, 3] [2, 4] para a y b respectivamente output = sess.run ( mul, {a: [1,3], b: [2, 4]}) print ('Multiplicar ab:', salida)
 Salida: [2. 12.]

Puntos para recordar marcadores de posición:

  • Los marcadores de posición no se inicializan y no contienen datos.
  • Uno debe proporcionar entradas o feeds al marcador de posición que se consideran durante el tiempo de ejecución.
  • La ejecución de un marcador de posición sin entrada genera un error.

Ahora, sigamos adelante y entendamos: que son las variables

Variables

En el aprendizaje profundo, los marcadores de posición se utilizan para tomar entradas arbitrarias en su modelo o gráfico. Además de tomar entradas, también necesita modificar el gráfico para que pueda producir nuevas salidas w.r.t. mismas entradas. Para ello, utilizará variables. En pocas palabras, una variable le permite agregar dichos parámetros o nodos al gráfico que son entrenables, es decir, el valor se puede modificar durante un período de tiempo. Las variables se definen proporcionando su valor y tipo inicial como se muestra a continuación:

var = tf.Variable ([0.4], dtype = tf.float32)

Nota:

  • En caso de que no hayas proporcionado el tipo de datos explícitamente, TensorFlow inferirá el tipo de constante / variable del valor inicializado.
  • TensorFlow tiene muchos de sus propios tipos de datos como tf.float32 , tf.int32 etc. Puede referirse a todos ellos sobre Aquí .

Las constantes se inicializan cuando llamas tf.constant y su valor nunca puede cambiar. Por el contrario, las variables no se inicializan cuando llama tf.Variable . Para inicializar todas las variables en un programa de TensorFlow, debe llamar explícitamente a una operación especial como se muestra a continuación:

init = tf.global_variables_initializer () sess.run (init)

Recuerde siempre que se debe inicializar una variable antes de utilizar un gráfico por primera vez.

Nota: Las variables de TensorFlow son búferes en memoria que contienen tensores, pero a diferencia de los tensores normales que solo se instancian cuando se ejecuta un gráfico y se eliminan inmediatamente después, las variables sobreviven en múltiples ejecuciones de un gráfico.

cuál es la diferencia entre git y github

Ahora que hemos cubierto suficientes conceptos básicos de TensorFlow, sigamos adelante y entendamos cómo implementar un modelo de regresión lineal con TensorFlow.

Modelo de regresión lineal con TensorFlow

El modelo de regresión lineal se utiliza para predecir el valor desconocido de una variable (variable dependiente) a partir del valor conocido de otras variables (variable independiente) utilizando la ecuación de regresión lineal como se muestra a continuación:

Por lo tanto, para crear un modelo lineal, necesita:

  1. Variable dependiente o de salida (Y)
  2. Pendiente variable (w)
  3. Y – Intercept or Bias (b)
  4. Variable independiente o de entrada (X)

Entonces, comencemos a construir un modelo lineal usando TensorFlow:

Copie el código haciendo clic en el botón que se muestra a continuación:

# Creando variable para la pendiente del parámetro (W) con valor inicial como 0.4 W = tf.Variable ([. 4], tf.float32) #Creando variable para el sesgo del parámetro (b) con valor inicial como -0.4 b = tf.Variable ( [-0.4], tf.float32) # Creación de marcadores de posición para proporcionar entrada o variable independiente, denotada por xx = tf.placeholder (tf.float32) # Ecuación de regresión lineal linear_model = W * x + b # Inicializando todas las variables sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # Ejecución del modelo de regresión para calcular la salida wrt para imprimir los valores x proporcionados (sess.run (linear_model {x: [1, 2, 3, 4]}))

Salida:

[ 0. 0.40000001 0.80000007 1.20000005]

El código mencionado anteriormente solo representa la idea básica detrás de la implementación del modelo de regresión, es decir, cómo sigue la ecuación de la línea de regresión para obtener la salida w.r.t. un conjunto de valores de entrada. Pero, quedan dos cosas más por agregar en este modelo para convertirlo en un modelo de regresión completo:

  • Primero, necesitamos proporcionar un mecanismo mediante el cual nuestro modelo pueda entrenarse automáticamente en función de un conjunto determinado de entradas y salidas respectivas.
  • Lo segundo que necesitamos es validar nuestro modelo entrenado comparando su salida con la salida deseada o objetivo en función de un conjunto dado de valores x.

Ahora entendamos cómo puedo incorporar las funcionalidades mencionadas anteriormente en mi código para el modelo de regresión.

Función de pérdida: validación del modelo

Una función de pérdida mide qué tan lejos está la salida actual del modelo de la salida deseada o objetivo. Usaré una función de pérdida de uso más común para mi modelo de regresión lineal llamada Suma de error cuadrado o SSE. SSE calculada w.r.t. salida del modelo (representar por linear_model) y salida deseada o objetivo (y) como:

y = tf.placeholder (tf.float32) error = linear_model - y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x: [1,2,3,4 ], y: [2, 4, 6, 8]})
 Salida: 90.24

Como puede ver, estamos obteniendo un alto valor de pérdida. Por lo tanto, necesitamos ajustar nuestros pesos (W) y sesgo (b) para reducir el error que estamos recibiendo.

tf.train API - Entrenamiento del modelo

TensorFlow proporciona optimizadores que cambian lentamente cada variable para minimizar la función de pérdida o error. El optimizador más simple es descenso de gradiente . Modifica cada variable de acuerdo con la magnitud de la derivada de pérdida con respecto a esa variable.

#Creación de una instancia de optimizador de descenso de gradiente optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) for i in range (1000): sess.run (train, {x: [1, 2, 3, 4], y: [2, 4, 6, 8]}) imprimir (sess.run ([W, b]))
 Salida: [matriz ([1.99999964], dtype = float32), matriz ([9.86305167e-07], dtype = float32)]

Entonces, así es como creas un modelo lineal usando TensorFlow y lo entrenas para obtener el resultado deseado.

Ahora que conoce el aprendizaje profundo, consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso Edureka Deep Learning with TensorFlow Certification Training ayuda a los estudiantes a convertirse en expertos en la capacitación y optimización de redes neuronales básicas y convolucionales utilizando proyectos y asignaciones en tiempo real junto con conceptos como la función SoftMax, redes neuronales de codificación automática, máquina de Boltzmann restringida (RBM).

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios y nos pondremos en contacto con usted.