Pensando en Tensores

Los números simples y escalares son excelentes cuando se aprenden los conceptos básicos de los grafos de cómputo, pero ahora que comprendemos el “flujo”, conozcamos los tensores.

Los tensores, como se mencionó anteriormente, son simplemente la abstracción n-dimensional de las matrices. Por lo tanto, un tensor 1-D sería equivalente a un vector, un tensor 2-D es una matriz, y por encima de eso solo puede decir "Tensor N-D". Con esto en mente, podemos modificar nuestro gráfico de ejemplo anterior para usar tensores: 



Ahora, en lugar de tener dos nodos de entrada separados, tenemos un solo nodo que puede admitir un vector (o tensor 1-D) de números. Este gráfico tiene varias ventajas sobre nuestro ejemplo anterior:


  • El cliente solo tiene que enviar entradas a un solo nodo, lo que simplifica el uso del gráfico.
  • Los nodos que dependen directamente de la entrada ahora solo tienen que realizar un seguimiento de una dependencia en lugar de dos.
  • Ahora tenemos la opción de hacer que el gráfico se tome en vectores de cualquier longitud, si lo deseamos. Esto haría que la gráfica sea más flexible. También podemos hacer que el gráfico aplique un requisito estricto, y forzar que las entradas tengan una longitud de dos (o cualquier otra longitud que queramos).
Podemos implementar este cambio en TensorFlow modificando nuestro código anterior: 


Además de ajustar los nombres de las variables, aquí hicimos dos cambios principales: 
  1. Reemplazamos los nodos separados a y b con un nodo de entrada consolidado (ahora solo a). Pasamos en una lista de números, que tf.constant puede convertir a un Tensor 1-D
  2. Nuestras operaciones de multiplicación y suma, que solían tomar valores escalares, ahora son tf.reduce_prod() y tf.reduce_sum(). Estas funciones, cuando se les da un Tensor como entrada, toman todos sus valores y los multiplican o los suman, respectivamente.


En TensorFlow, todos los datos pasados de un nodo a otro son objetos Tensor. Como hemos visto, las operaciones de TensorFlow pueden observar los tipos estándar de Python, como los enteros y las cadenas, y convertirlos automáticamente en tensores. Hay varias formas de crear objetos Tensor manualmente (es decir, sin leerlo desde una fuente de datos externa), así que repasemos algunos de ellos.
En este libro, cuando discutamos el código usaremos "tensor" y
"Tensor" indistintamente.


Comentarios