Path: blob/master/site/es-419/tutorials/customization/basics.ipynb
25118 views
Copyright 2018 The TensorFlow Authors.
Fundamentos de la personalización: tensores y operaciones
Este es un tutorial de introducción a TensorFlow que muestra cómo:
Importar el paquete deseado.
Crear y usar tensores.
Usar la aceleración por GPU.
Construir una canalización de datos con
tf.data.Dataset
.
Importar TensorFlow
El primer paso es importar el módulo tensorflow
. A partir de TensorFlow 2, eager execution está habilitado por default. Eager execution permite un front-end más interactivo para TensorFlow, que podrá ver con más detalle más adelante.
Tensores
Los tensores son matrices multidimensionales. Como los objetos ndarray
de NumPy, los objetos tf.Tensor
tienen un tipo de datos y una forma. Además, los tf.Tensor
pueden residir en la memoria del acelerador (como una GPU). TensorFlow provee una rica librería de operaciones (por ejemplo, tf.math.add
, tf.linalg.matmul
, y tf.linalg.inv
) que consumen y producen tf.Tensor
es. Estas operaciones convertirán automáticamente los tipos incorporados de Python. Por ejemplo:
Cada tf.Tensor
tiene una forma y un tipo de datos:
Las diferencias más obvias entre los tf.Tensor
y los arreglos NumPy son:
Los tensores pueden encontrarse en la memoria aceleradora (como GPU, TPU).
Los tensores son inmutables.
Compatibilidad con NumPy
Es fácil convertir entre un tf.Tensor
TensorFlow y un ndarray
NumPy:
Las operaciones TensorFlow convierten automáticamente los ndarrays NumPy en Tensores.
Las operaciones NumPy convierten automáticamente los Tensores en ndarrays NumPy.
Los tensores se convierten explícitamente en ndarrays NumPy usando su método .numpy()
. Dado que el arreglo y el tf.Tensor
comparten la representación de memoria subyacente cuando es posible, estas conversiones suelen ser económicas. Pero compartir la representación subyacente no siempre es posible, ya que el tf.Tensor
puede estar en la memoria de la GPU, mientras que las matrices de NumPy siempre se encuentran en la memoria del host, y la conversión implica una copia de la GPU a la memoria del host.
Aceleración por GPU
Muchas operaciones de TensorFlow usan GPU para acelerar la computación. En ausencia de anotaciones, TensorFlow decide automáticamente si usar la GPU o la CPU para una operación, copiando el tensor entre la memoria de la CPU y la de la GPU si es necesario. Los tensores generados por una operación se almacenarán normalmente en la memoria del dispositivo que realizó el proceso. Por ejemplo:
Nombres de dispositivos
La propiedad Tensor.device
indica un nombre de cadena completamente calificado del dispositivo en el que se alojan los contenidos del Tensor. Este nombre condensa muchos detalles, como un identificador para la dirección de red del host en el que se está ejecutando este programa, y el dispositivo dentro de ese host. Un programa TensorFlow lo necesita para su ejecución distribuida. La cadena termina con GPU:<N>
si el tensor se encuentra en la GPU número N
del host.
Colocación explícita en el dispositivo
En TensorFlow, la colocación se refiere a cómo se asignan (colocan) las operaciones individuales a un dispositivo para su ejecución. Como se mencionó anteriormente, si no se ofrece ninguna orientación explícita, TensorFlow decidirá automáticamente en qué dispositivo debe ejecutarse una operación, y copiará los tensores a ese dispositivo si es necesario.
No obstante, las operaciones TensorFlow pueden colocarse explícitamente en dispositivos específicos usando el gerente de contexto del tf.device
. Por ejemplo:
Conjuntos de datos
Esta sección usa la API tf.data.Dataset
para construir una canalización que suministre datos a tu modelo. tf.data.Dataset
se usa para construir canalizaciones de entrada complejas y eficaces a partir de piezas sencillas y reutilizables que suministrarán datos a los bucles de entrenamiento o evaluación de tu modelo. (Consulte la sección tf.data: Construir canalizaciones de entrada de TensorFlow para saber más).
Crear un Dataset
fuente
Cree un conjunto de datos fuente usando una de las funciones de fábrica como tf.data.Dataset.from_tensors
, tf.data.Dataset.from_tensor_slices
, o usando objetos que lean de archivos como tf.data.TextLineDataset
o tf.data.TFRecordDataset
. Consulte la sección Lectura de datos de entrada de la guía tf.data: Construir canalizaciones de entrada de TensorFlow para saber más.
Aplicar transformaciones
Use las funciones de transformación como tf.data.Dataset.map
, tf.data.Dataset.batch
, y tf.data.Dataset.shuffle
para aplicar transformaciones a los registros del conjunto de datos.
Iterar
Los objetos tf.data.Dataset
admiten la iteración para recorrer los registros: