[vc_row][vc_column][vc_column_text]En un artículo anterior revisamos una introducción a TensorFlow y los casos de uso o aplicaciones de este proyecto de Machine Learning. En este artículo revisaremos como empezar a dar los primeros pasos con TensorFlow.
¿Que es un Tensor?
Un Tensor es el bloque principal de trabajo al utilizar TensorFlow. Estos son como las variables que TensorFlow utiliza para trabajar con los datos. Cada tensor tiene dimensión y tipo.
La dimensión se refiere a las filas y columnas del tensor. Se puede definir un tensor de una dimensión, tensor de dos dimensiones, tensor de tres dimensiones, los cuales revisaremos.
El tipo se refiere al tipo de dato para los elementos del tensor.[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Definición de un Tensor de una dimensión
Para definir un tensor, creamos un arreglo con NumPy o una lista Python y luego convertirla a un tensor utilizando la función tf_convert_to_tensor.
Utilizamos NumPy para crear un arreglo como el siguiente:
1 2 | import numpy as np arr = np.array([1, 5.5, 3, 15, 20]) |
El resultado muestra las dimensiones y la forma:
1 2 3 4 5 6 7 | import numpy as np arr = np.array([1, 5.5, 3, 15, 20]) print(arr) print (arr.ndim) print (arr.shape) print (arr.dtype) |
Es como si fuera una lista de Python, pero no hay coma entre ellos:
1 2 3 4 | [ 1. 5.5 3. 15. 20. ] 1 (5,) float64 |
Ahora convertiremos ese arreglo en un tensor utilizando la función tf_convert_to_tensor:
1 2 3 4 5 | import numpy as np import tensorflow as tf arr = np.array([1, 5.5, 3, 15, 20]) tensor = tf.convert_to_tensor(arr,tf.float64) print(tensor) |
En el resultado, puedes ver la definición del tensor, pero no puede ver los elementos del tensor:
1 | Tensor("Const:0", shape=(5,), dtype=float64) |
Para ver los elementos del tensor debes ejecutar una session, como la siguiente:
1 2 3 4 5 6 7 | import numpy as np import tensorflow as tf arr = np.array([1, 5.5, 3, 15, 20]) tensor = tf.convert_to_tensor(arr,tf.float64) sess = tf.Session() print(sess.run(tensor)) print(sess.run(tensor[1])) |
Los elementos se visualizan de la siguiente forma:
1 2 | [ 1. 5.5 3. 15. 20. ] 5.5 |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Define un tensor de dos dimensiones
Esto se realiza en forma similar al de una dimensión, pero en este caso utilizaremos lo siguiente:
1 2 3 4 5 6 | import numpy as np import tensorflow as tf arr = np.array([(1, 5.5, 3, 15, 20),(10, 20, 30, 40, 50), (60, 70, 80, 90, 100)]) tensor = tf.convert_to_tensor(arr) sess = tf.Session() print(sess.run(tensor)) |
El resultado se visualiza de la siguiente forma:
1 2 3 | [[ 1. 5.5 3. 15. 20. ] [ 10. 20. 30. 40. 50. ] [ 60. 70. 80. 90. 100. ]] |
Ahora ya sabe como definir un tensor. ¿Que tal el realizar ciertas operaciones matemáticas entre estos?[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Operaciones Matemáticas con Tensores
Supongamos que tenemos dos arreglos:
1 2 | arr1 = np.array([(1,2,3),(4,5,6)]) arr2 = np.array([(7,8,9),(10,11,12)]) |
Puede utilizar la función de add, de la siguiente forma:
1 | arr3 = tf.add(arr1,arr2) |
Entonces, todo el código quedaría así:
1 2 3 4 5 6 7 8 | import numpy as np import tensorflow as tf arr1 = np.array([(1,2,3),(4,5,6)]) arr2 = np.array([(7,8,9),(10,11,12)]) arr3 = tf.add(arr1,arr2) sess = tf.Session() tensor = sess.run(arr3) print(tensor) |
O los puede multiplicar de la siguiente forma:
1 2 3 4 5 6 7 8 | import numpy as np import tensorflow as tf arr1 = np.array([(1,2,3),(4,5,6)]) arr2 = np.array([(7,8,9),(10,11,12)]) arr3 = tf.multiply(arr1,arr2) sess = tf.Session() tensor = sess.run(arr3) print(tensor) |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Tensor de tres dimensiones
Hemos visto cómo trabajar con tensores de una dimensión y dos dimensiones. Ahora, veremos los tensores tridimensionales. Pero esta vez, no usaremos números, usaremos una imagen RGB donde cada parte de la imagen se específica mediante coordenadas x, y, z.
Estas coordenadas son el ancho, alto y profundidad del color.
Primero, realizamos el import de matplotlib. Puedes instalar matplotlib utilizando pip, si no esta instalado en sus sistema.
Ahora, ponga el archivo en la misma dirección del archivo Python e importemos la imagen utilizando matplotlib como sigue:
1 2 3 4 5 6 7 | import matplotlib.image as img myfile = "lifegeeks.png" myimage = img.imread(myfile) print(myimage.ndim) print(myimage.shape) |
Obtendremos el siguiente resultado:
1 2 | 3 (370, 367, 4) |
Como puede ver, es una imagen de tres dimensiones con ancho de 370, algo de 367 y la profundidad del color es de 4.
Puede ver la imagen con el siguiente código:
1 2 3 4 5 6 7 8 | import matplotlib.image as img import matplotlib.pyplot as plot myfile = "lifegeeks.png" myimage = img.imread(myfile) plot.imshow(myimage) plot.show() |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_single_image image=»1860″ img_size=»full» alignment=»center»][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Manipulación de la imagen con TensorFlow
A fin de manipular la imagen, vamos a poner los valores utilizando placeholder, de la siguiente forma:
1 | myimage = tf.placeholder("int32",[None,None,3]) |
Para cortar la imagen, utilizamos el operador slice de la siguiente forma:
1 | cropped = tf.slice(myimage,[10,0,0],[16,-1,-1]) |
Finalmente ejecutamos la session:
1 | result = sess.run(cropped, feed_dict={slice: myimage}) |
Luego puede ver los resultados utilizando matplotlib. Luego, todo el código se ve de la siguiente forma:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import tensorflow as tf import matplotlib.image as img import matplotlib.pyplot as plot myfile = "likegeeks.png" myimage = img.imread(myfile) slice = tf.placeholder("int32",[None,None,3]) cropped = tf.slice(myimage,[10,0,0],[16,-1,-1]) sess = tf.Session() result = sess.run(cropped, feed_dict={slice: myimage}) plot.imshow(result) plot.show() |
[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][vc_single_image image=»1861″ img_size=»full» alignment=»center»][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]Estos ejemplos de TensorFlow muestran lo sencillo que es trabajar con TensorFlow.
Este artículo se encuentra basado en An Introduction to TensorFlow[/vc_column_text][/vc_column][/vc_row]