Publicado el 3 de Noviembre del 2018
10.190 visualizaciones desde el 3 de Noviembre del 2018
288,9 KB
20 paginas
Creado hace 6a (31/08/2017)
Tabla de contenido
Introducción
Tutoriales
TensorFlow Mecánica 101
API
Python API
Framework
Comenzando
Uso Básico
1.1
1.2
1.2.1
1.3
1.3.1
1.3.1.1
1.4
1.4.1
1
Comenzando
Comenzando
Vamos a prepararnos para comenzar con TensorFlow!
Pero antes de comenzar, echemos un vistazo a como se ve el código de TensorFlow con la
API de Python, para que tengas una idea hacia adonde vamos.
Aquí tenemos un pequeño programa en Python que representa algunos datos en dos
dimensiones, con los cuales calcularemos la línea con el mejor ajuste.
import tensorflow as tf
import numpy as np
# Crear 100 puntos falsos x, y en NumPy, y = x * 0.1 + 0.3
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
# Tratar de encontrar valores para W y b que puedan calcular y_data = W * x_data + b
# (Sabemos que W debe de ser 0.1 y b 0.3, pero Tensorflow intentará descubrirlo por no
sotros.)
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b
# Minimizar los errores de la media cuadrática.
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
# Antes de comenzar, inicializar las variables. 'Corramos' esto primero.
init = tf.initialize_all_variables()
# Lanzamos el grafo
sess = tf.Session()
sess.run(init)
# Ajuste de línea.
for step in xrange(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
# Aprende que el mejor ajuste es W: [0.1], b: [0.3]
2
Comenzando
La primera parte de este código crea un grafo de flujo de datos. TensorFlow no ejecuta
ningún cómputo hasta que se crea la sesión y la función run es llamada.
Para alimentar aún mas nuestro apetito, te sugerimos que revises como luce un problema
clásico de machine learning en TensorFlow. En la tierra de las redes neuronales el problema
clásico más "clásico" es la clasificación de dígitos escritos a mano MNIST. Ofrecemos dos
introducciones aquí, una para los novatos en machine learning, y otra para profesionales. Si
ya has entrenado docenas de modelos MNIST en otros paquetes de software, por favor
toma la píldora roja. Si nunca has escuchado acerca de MNIST, definitivamente toma la
píldora azul. Pero si consideras ser un punto intermedio se sugerimos probar primero la azul
y después la roja.
Si ya estas seguro que deseas aprender e instalar TensorFlow puedes saltarte esto y seguir
adelante. No te preocupes, aún asi tendrás oportunidad de ver MNIST -- también usaremos
MNIST como ejemplo en un tutorial técnico en donde desarrollaremos las características de
3
Comenzando
TensorFlow.
Siguientes pasos recomendados
Descarga e instalación
Uso básico
101 Mecánicas de TensorFlow
Jugar con TensorFlow en tu navegador
4
Tutoriales
Tutoriales
5
TensorFlow Mecánica 101
TensorFlow Mecánica 101
Código: tensorflow / ejemplos / tutoriales / mnist /
El objetivo de este tutorial es mostrar cómo usar TensorFlow para entrenar y evaluar una
sencilla red neuronal de tipo Feedforward que clasifica números escritos de forma manual,
usando la base de datos MNIST. El público objetivo de este tutorial son aquellos que tengan
experciencia en el uso de máquinas de aprendizaje y que esten interesados en utilizar
TensorFlow.
En terminos generales estos tutoriales no pretenden enseñar sobre máquinas de
aprendizaje.
Por favor asegúrese de haber seguido correctamente las instrucciones para instalar
TensorFlow .
Archivos de este tutorial
Este tutorial hace referencia a los siguientes archivos:
Archivo
mnist.py
fully_connected_feed.py
Propósito
El código para desarrollar un modelo MNIST plenamente
conectado (fully-connected MNIST)
El código para entrenar el modelo MNIST con el conjunto
de datos descargados usando un diccionario de
alimentación.
Solo es necesario ejecutar el programa fully_connected_feed.py para comenzar el
entrenamiento:
python fully_connected_feed.py
Preparación de los Datos
MNIST es un problema clásico del aprendizaje de máquina. Consiste en análizar las
imágenes de los números escritos a mano de tamaño 28x28 píxeles y que estan en una
escala de grises para determinar qué dígito representa la imagen, esto incluye todos los
números desdee el cero hasta nueve.
6
TensorFlow Mecánica 101
Para obtener más información, consulte las página ...
Descargas
Al inicio del método run_training(), la función input_data.read_data_sets() se encarga de
que los datos para el entrenamiento hayan sido descargados a su carpeta local y despues
los descomprime para devolver un diccionario de instancias tipo DataSet.
data_sets = input_data.read_data_sets(FLAGS.train_dir, FLAGS.fake_data)
NOTA: El indicador fake_data se utiliza con el fun de realizar pruebas unitarias y puede ser
omitido por el lector.
Datos
data_sets.train
data_sets.validation
data_sets.test
Propósito
55000 imagenes y nombres para el entrenamiento principal
5000 imagenes y nombres para validar periodicamente la
precisión del entrenamiento
10000 imagenes y nombres, para las pruebas finales de cuan
preciso es el entrenamiento
Para obtener más información acerca de los datos, por favor lea el tutorial sobre descargas.
Entradas y marcadores de posición
La función placeholder_inputs() crea dos operaciones tf.placeholder que definen como son
las entradas, incluyendo el tamaño (batch_size), esto es para el resto de la gráfica y es con
la que se poblaran los ejemplos.
images_placeholder = tf.placeholder(tf.float32, shape=(batch_size, mnist.IMAGE_PIXELS)
)
labels_placeholder = tf.placeholder(tf.int32, shape=(batch_size)
7
TensorFlow Mecánica 101
Mas abajo en el cada ciclo del loop de entrenamiento, cada imagen se separa de su
etiqueta para ajustar el batch_size, luego se asocia un marcador de posición y el resultado
se pasa como valor dentro parametro feed_dict en la función sess.run().
Construyendo el gráfico
Despues de haber creado los marcadores de posición de los datos, el gráfico se construye
a partir del programa mnist.py de acuerdo con el siguiente patrón de tres etapas:
inference(), loss(), and training().
1. inference(): construye el gráfico a medida que se vaya requiriendo para ejecutar la red
neuronal (con propagación hacia adelante) y realizar las predicciones.
2. loss(): agrega al gráfico de inferencia las operaciones requeridas para poder generar la
perdida.
3. training(): agrega al gráfico de perdida las operaciones requeridas para calcular y
aplicar los gradientes.
Inferencia
La función de inferencia construye el gráfico a medida que se vaya necesitando para
retornar el tensor que puede contener las predicciones.
8
API
Documentación API
TensorFlow tiene APIs disponibles en varios idiomas, tanto para la construcción como para
la ejecución de un gráfico en TensorFlow. La API de Python es en la actualidad la más
completa y la más fácil de usar, pero la C++ API puede ofrecer algunas ventajas de
rendimiento en ejecución de gráficos, y soporta el despliegue en pequeños dispositivos
como Android.
Con el tiempo, esperamos que la comunidad TensorFlow desarrolle frontends para
lenguages como Go, Java, JavaScript, Lua, R, y tal vez otras opciones.
Con SWIG, es relativamente fácil de desarrollar una interfaz TensorFlow para su lenguaje
preferido.
9
Python API
Python API
Contrucción de Gráficos
add_to_collection
as_dtype
bytes
control_dependencies
convert_to_tensor
convert_to_tensor_or_indexed_slices
device
Dimension
DType
get_collection
get_collection_ref
get_default_graph
get_seed
Graph
GraphKeys
import_graph_def
load_file_system_library
load_op_library
name_scope
NoGradient
op_scope
Operation
register_tensor_conversion_function
RegisterGradient
RegisterShape
reset_default_graph
Tensor
TensorShape
10
Framework
Contrucción de Gráficos
[Menú con vínculos]
Clases y funciones para la construcción de gráficos en TensorFlow.
tf.add_to_collection(name, value)
Contenedor/envoltorio para Graph.add_to_collection() utilizando el gràfico por defecto.
Consulte Graph.add_to_collection() apra más detalles.
Argumentos:
name: La clave para la colección.Por ejemplo, la clase Graph Keys contiene varios
nombres estándares para colecciones.
value: El valor para agregar a la colección.
tf.as_dtype(type_value)
Convierte el type_value dado a un DType
Argumentos:
type_value: Un valor que se puede convertir a un objeto tf.DType. Actualmente esto
puede ser un objeto tf.DType, una enumeración DataType, un nombre tipo cadena, o
un numpy.dtype.
Retorno: Un DType correspondiente a type_value.
Lanzamiento:
TypeError: Si type_value no puede ser convertido a DType.
class tf.bytes
str(object='') -> cadena
Retorna una linda representación de cadena del objeto. Si el argumento es una cadena, el
valor de retorno es el mismo objeto.
tf.control_dependencies(control_inputs)
11
Framework
Contenedor/envoltorio para Graph.control_dependencies() utilizado en el gráfico por
defecto.
Mire Graph.control_dependencies() para más detalles. Argumentos:
control_inputs: una lista de objetos Operation o Tensor los cuales deben ser
ejecutados o computadas antes de la ejecución de las operaciones definidas en el
contexto.Puede además ser None para limpiar el control de dependencias.
tf.convert_to_tensor(value, dtype=None, name=None,
as_ref=False)
Convertir el value dado a un Tensor
Esta función convierte objetos Python de varios tipos a objetos Tensor. Se aceptan objetos
Tensor, matrices numpy, listas Python,escalares Python. Por ejemplo:
import numpy as np
def my_func(arg):
arg = tf.convert_to_tensor(arg, dtype=tf.float32)
return tf.matmul(arg, arg) + arg
# The following calls are equivalent.
value_1 = my_func(tf.constant([[1.0, 2.0], [3.0, 4.0]]))
value_2 = my_func([[1.0, 2.0], [3.0, 4.0]])
value_3 = my_func(np.array([[1.0, 2.0], [3.0, 4.0]], dtype=np.float32))
Esta función puede ser útil al componer una nueva operación en Python (como el caso de
mi_func en el anterior ejemplo). Toda operación constr
Comentarios de: TensorFlow en Español (0)
No hay comentarios