-
Notifications
You must be signed in to change notification settings - Fork 1
Introducción a Tensorflow
Sandra Lucia edited this page Oct 18, 2018
·
1 revision
Tensorflow es una librería open-source que permite hacer operaciones matemáticas de manera sencilla. Es simbolica y dinámica. Basta con indicar el flujo de la información, y, en la mayoría de los casos, no es necesario definir completamente las variables de entrada.
Hay varios aspectos que debemosconsiderar:
- Tensorflow: Grafos vs Eager
- APIs: layers, keras, train
tf 1.7 -> Eager
- Se define el flujo de la información.
- Se crea una sesión que manejará al grafo.
- Se inicializan las variables que contengan valores aleatoreos.
- Se manda llamar el nodo del grafo de interes, se incluye los valores de entrada necesarios
- Tensor Contenedor que agrupa a la información de manera vectorial/matricial.
- Placeholder Son el punto de entrada de la información a nuestro grafo. Será un tensor.
- Variable Contiene a variables que necesitan ser inicializadas, y que pueden cambiar en el transcurso de la ejecución del grafo. Puede ser un tensor o cualquier otro tipo con cualquier forma.
- Constant Define a un tensor que contendrá valores inmutables.
- Session Es el encapsulamiento requerido para ejecutar las operaciones de tensorflow.
- Run Metodo utilizado para ejecutar las operaciones tensorflow, y la forma con que se introduce la información al gráfo.
- Feed Dictionary Contenedor de los valores a ser procesados en el grafo.
Shape of a tensor (get_shape())
import tensorflow as tf
# Se definen las constantes
a = tf.constant(1.)
b = tf.constant(1.5)
# Se define la operación
c = tf.add(a,b)
# Se crea una sesion
sess = tf.Session()
# Se ejecutan el grafo como fue definido previamente
# y se obtiene el valor de c
resultado = sess.run(c)
print(resultado) # 2.5
ó
# Se definen las constantes
a = tf.constant(1.)
b = tf.constant(1.5)
# Se define la operación
c = a + b
# Se crea una sesion
sess = tf.Session()
# Se ejecuta el grafo como fue definido previamente
# y se obtiene el valor de c
resultado = sess.run(c)
print(resultado) # 2.5
# Se crea la variable y se le asigna el valor que tendrá.
a = tf.Variable(100.)
# Se define la operación. Disminuirá el valor de a en 1 cada
# vez que se ejecute esta operación
b = tf.assign_sub(1.)
# Se crea una sesion
sess = tf.Session()
# Se inicializan las variables.
#Las variables requieren ser inicializadas, en caso contrario tf arrojará un error
sess.run(tf.global_variables_initializer())
# Se ejecuta el grafo como fue definido previamente
# y se obtiene el valor de b
resultado = sess.run(b)
print(resultado) # 99.0
# Se crea la variable de entrada que aceptará float32 y su forma
# será como un número comun.
a = tf.palcehoder(tf.float32,shape=[])
# Se crea una constante con valor 2.0
b = tf.constant(2.)
# Se define la operación de multiplicación
c = tf.multiply(a,b)
# Se crea una sesion
sess = tf.Session()
# Creamos un diccionario que contiene los valores
# que serán introducidos al grafo, y el punto de entrada
# que tendran.
input_data = {a:3.}
# Se ejecuta el grafo y se obtiene c, basado en el valor de entrada
# definido previamente en input_data.
resultado = sess.run(c,feed_dict=input_data)
print(resultado) # 6.0
a = tf.placeholder(tf.float32,shape=[2,2])
b = tf.placeholder(tf.int32,shape=[2,1])
# Convertimos los valores de int32 a float32.
# TF no acepta operaciones entre diferentes tipos de datos
b = tf.cast(b,tf.float32)
c = tf.matmul(a,b) # Producto interno
d = tf.multiply(a,b) # Multiplicación elemento por elemento. Broadcasting
sess = tf.Session()
input_data = {a:[[1,3],
[2,4]],
b:[[5],
[6]]}
resultado1,resultado2 = sess.run([c,d],feed_dict=input_data)
# resultado1 = [[23.0],[34.0]]
# resultado2 = [[5.0,15.0],[12.0,24.0]]
a = tf.placeholder(tf.bool,shape=[None,3])
b = tf.reshape(a,shape=[-1])
sess = tf.Session()
input_data1 = {a:[[False,True,False]]}
input_data2 = {a:[[False,True,False],
[True,True,False]]}
resultado1 = sess.run(b,feed_dict=input_data1) # [False,True,False]
resultado2 = sess.run(b,feed_dict=input_data2) # [False,True,False,True,True,False]