11 feb. 2018

Objeto Graph de TensorFlow

Continuando con la serie de artículos sobre Tensorflow, en este caso se explicará el significado y uso de Grapg.

Antes de continuar les dejo la lista de artículos de esta serie:
  1. Hola mundo desde Tensorflow
  2. Matemáticas básicas con Tensorflow
  3. Manejo de matrices con Tensorflow
  4. Variables y placeholders en Tensorflow

tf.Graph:
Cada computo en Tensorflow es representado por un Grafo de flujo de datos, este tiene dos elementos: 
  • Un objeto tf.Operation, que representa la unidad de computo.
  • Un objeto tf.Tensor, que representa unidades de datos,  que se necesita para las operaciones.
A continuación se muestra una figura de la representación de un Grafo:


A continuación se muestra el uso de Graph:

In [1]:
#Se importa tensorflow
import tensorflow as tf
In [2]:
#Se define dos constantes
n1 = tf.constant(10)
n2 = tf.constant(20)
In [3]:
#Se realiza la suma de las dos constantes
n3 = n1+n2
In [4]:
#Se instancia la sesión y se ejecuta almacenando el resultado de n3 que se muestra

with tf.Session() as sess:
    result = sess.run(n3)
print (result)
30
In [5]:
#Se imprime la constante n3, es una suma, y de tipo int32
print(n3)
Tensor("add:0", shape=(), dtype=int32)
In [6]:
#Se obtiene el valor por defecto del grafo en memoria
print (tf.get_default_graph())
<tensorflow.python.framework.ops.Graph object at 0x7f1026aa1cf8>
In [7]:
#Se instancia el objeto grafo 
g = tf.Graph()
In [8]:
#Se imprime su valor, los valores en memoria serán distintos del por defecto al creado.
print(g)
<tensorflow.python.framework.ops.Graph object at 0x7f1026ad00b8>
In [9]:
#Se define graph1 como el grafo por defecto
graph1 = tf.get_default_graph()
In [10]:
#Se imprime graph1, será el valor por defecto en memoria
print(graph1)
<tensorflow.python.framework.ops.Graph object at 0x7f1026aa1cf8>
In [11]:
#Se instancia el grafo2
graph2 = tf.Graph()
In [12]:
#Se muestra el valor de grafo2
print(graph2)
<tensorflow.python.framework.ops.Graph object at 0x7f1026ad0390>
In [13]:
#Se define el grafo2 como si fuera  por defecto y se muestra si en verdad es por defecto 
with graph2.as_default():
    print(graph2 is tf.get_default_graph())
True
In [14]:
#Se evalua si grafo 2, es el de por defecto
print(graph2 is tf.get_default_graph())
False

Otro ejemplo de Grafo

In [15]:
#Se define el grafo
grafo = tf.Graph()
In [16]:
#Se define la sesión pasandole el grafo
with tf.Session(graph=grafo) as sess:
    #Se define las constantes x y y que son arreglos
    x = tf.constant([11,13,16])
    y = tf.constant([10,10,10])
    #Se realiza la operación de suma de x+y
    op = tf.add(x,y)
    #Se ejecuta la operación en la sesión
    resultado = sess.run(fetches=op)
    print(resultado)
[21 23 26]
In [ ]:
 
Si quiere investigar más sobre Graph puede revisar su documentación en tensorflow (documentación del api y guía para los progamadores), pueden revisar el artículo en medium Tensorflow in a nutshell-Part 1: Basics, también pueden revisar el tutorial de la gente de datacamp Tensorflow tutorial for beginners.

Publicar un comentario