Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

TensorFlow desde cero, Unidad 3 — Tensores en profundidad, 3.1 — Estructura y tipos de tensores ·

Shapes y dtypes

Shapes y dtypes: Comprendiendo la estructura y tipos de tensores en TensorFlow

Introducción

En el ecosistema de Deep Learning, los tensores son fundamentales. TensorFlow utiliza estos estructurados datos multidimensionales para manejar y procesar información. En esta unidad, profundizaremos en dos aspectos cruciales: shapes (formas) y dtypes (tipos de datos). Estos conceptos son esenciales para comprender cómo funcionan los tensores y cómo optimizar su uso.

Explicación principal con ejemplos

Shapes (Formas)

La forma de un tensor en TensorFlow se refiere a la estructura multidimensional que representa los datos. Los shapes son cruciales porque definen el tamaño y la estructura del tensor, determinando cuántos elementos tiene en cada dimensión.

Un tensor con una única dimensión es conocido como un vector. Por ejemplo:

import tensorflow as tf

vector = tf.constant([1, 2, 3])
print(vector.shape)  # Output: (3,)

Un tensor bidimensional o matriz tiene dos dimensiones, lo que se refleja en su forma. Por ejemplo:

matrix = tf.constant([[1, 2], [3, 4]])
print(matrix.shape)  # Output: (2, 2)

Dtypes (Tipos de datos)

Los tipos de datos (dtypes) definen el formato y la precisión del dato que contiene cada elemento en un tensor. TensorFlow soporta varios dtypes, incluyendo enteros (int32, int64), flotantes (float16, float32, float64) y complejos.

Aquí tienes algunos ejemplos:

# Enteros
int_tensor = tf.constant([1, 2], dtype=tf.int32)
print(int_tensor.dtype)  # Output: tf.int32

# Flotantes
float_tensor = tf.constant([1.0, 2.0], dtype=tf.float64)
print(float_tensor.dtype)  # Output: tf.float64

Ejemplos de uso combinados

Para ilustrar cómo se utilizan shapes y dtypes juntos, vamos a construir un tensor de dos dimensiones con una forma específica:

# Definimos el tensor
custom_shape_tensor = tf.constant([
    [1.0, 2.0],
    [3.0, 4.0]
], dtype=tf.float64)

# Mostramos la forma y tipo de datos del tensor
print("Forma:", custom_shape_tensor.shape)  # Output: Forma: (2, 2)
print("Tipo de datos:", custom_shape_tensor.dtype)  # Output: Tipo de datos: tf.float64

Errores típicos / trampas

  1. Mixing dtypes: Es común intentar realizar operaciones entre tensores con diferentes tipos de datos, lo que puede generar errores. Por ejemplo:
   int_tensor = tf.constant([1], dtype=tf.int32)
   float_tensor = tf.constant([1.0], dtype=tf.float64)

   try:
       result = int_tensor + float_tensor
   except Exception as e:
       print(f"Error: {e}")
  1. Incorrecto shape: Ocasionalmente, se pueden crear tensores con shapes incorrectos para las operaciones que se intentan realizar. Por ejemplo, sumar dos tensores de formas incompatibles:
   a = tf.constant([1])
   b = tf.constant([2, 3])

   try:
       result = a + b
   except Exception as e:
       print(f"Error: {e}")
  1. Shapes desiguales: Operaciones en tensores multidimensionales requieren que las formas coincidan en las dimensiones correspondientes. Por ejemplo, sumar un tensor de forma (2, 1) con uno de forma (2, 2):
   a = tf.constant([[1]])
   b = tf.constant([[2], [3]])

   try:
       result = a + b
   except Exception as e:
       print(f"Error: {e}")

Checklist accionable

A continuación se presentan algunos puntos clave para mejorar el manejo de shapes y dtypes en tus proyectos TensorFlow:

  1. Verifica la forma del tensor: Antes de realizar cualquier operación, asegúrate de que las formas de los tensores coincidan.
  2. Define correctamente los dtypes: Asigna los tipos de datos adecuados a tus tensores para evitar conversiones innecesarias y posibles errores.
  3. Usa constantes y variables con shapes predefinidos: Asegúrate de que las formas de tus tensores sean consistentes en todo tu código.
  4. Comprueba la homogeneidad de dtypes: Verifica que los tipos de datos de los tensores involucrados en una operación sean compatibles.
  5. Utiliza funciones como tf.shape() y tf.dtypes.as_dtype(): Estas funciones te permiten obtener información valiosa sobre las formas y tipos de datos de tus tensores.

Cierre: Siguientes pasos

Para profundizar aún más en el manejo de shapes y dtypes, considera los siguientes pasos:

  • Explora más formas y dtypes: TensorFlow ofrece una amplia gama de tipos de datos para diferentes usos. Experimenta con ellos para ver cómo se comportan.
  • Utiliza bibliotecas de validación: Utiliza herramientas como tf.debugging para verificar las formas y dtypes de tus tensores en tiempo de ejecución.
  • Documenta tu código: Crea documentación detallada sobre los shapes y dtypes utilizados en cada parte del código. Esto te ayudará a mantener un control más preciso.

Con estos fundamentos, estás listo para manejar eficazmente las formas y tipos de datos de tus tensores en TensorFlow.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).