Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Deep Learning con Python, Unidad 3 — Tensores y operaciones fundamentales, 3.1 — Qué es un tensor ·

Shapes y broadcasting

Shapes y broadcasting

Introducción

En la ciencia de la computación, especialmente en Deep Learning, los tensores son una estructura fundamental. Para comprender y manipular eficazmente estos tensores, es crucial entender cómo trabajar con sus shapes (formas) y cómo funciona el broadcasting. En este artículo, exploraremos conceptos clave sobre shapes y broadcasting, que son fundamentales para cualquier tarea en Deep Learning.

Explicación principal

Un tensor es una generalización de vectores y matrices a múltiples dimensiones. Cada tensor tiene una forma (shape), que es una tupla que describe el número de elementos en cada dimensión del tensor. Por ejemplo, un tensor bidimensional de 3x3 se representaría como (3, 3).

Shapes

Un shape determina la estructura y dimensión de un tensor. Es útil visualizar un tensor con su forma para comprender cómo interactúan las operaciones en diferentes dimensiones. Veamos algunos ejemplos:

import numpy as np

# Crear un vector (1-dimensional)
vector = np.array([1, 2, 3])
print("Shape del vector:", vector.shape)  # Salida: (3,)

# Crear una matriz (2-dimensional)
matrix = np.array([[1, 2], [3, 4]])
print("Shape de la matriz:", matrix.shape)  # Salida: (2, 2)

# Crear un tensor 3D
tensor_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print("Shape del tensor 3D:", tensor_3d.shape)  # Salida: (2, 2, 2)

Broadcasting

Broadcasting es un mecanismo que permite operaciones entre tensores con shapes diferentes. Por ejemplo, sumar una matriz a cada fila de otra matriz. Los siguientes son ejemplos comunes:

# Crear tensores para ilustrar broadcasting
a = np.array([1, 2, 3])
b = np.array([[0], [1], [2]])

print("Broadcasting:", a + b)

Salida:

[[1 2 3]
 [2 3 4]
 [3 4 5]]

Ejemplo de Broadcasting

Imaginemos que tenemos dos tensores, A y B, con diferentes shapes. Usamos broadcasting para realizar operaciones como suma o multiplicación.

import numpy as np

# Definir tensores A y B
A = np.array([[1, 2], [3, 4]])
B = np.array([5, 6])

# Realizar operación de broadcasting
result = A + B

print("Resultado:", result)

Salida:

[[6 8]
 [8 10]]

Errores típicos / trampas

A medida que trabajamos con shapes y broadcasting, es común encontrarse con errores debido a la mala comprensión de las reglas de broadcasting. Aquí hay algunos puntos clave para tener en cuenta:

  1. Dimensiones no coincidentes: Si dos tensores tienen dimensiones diferentes y ninguna puede ser extendida por broadcasting, se producirá un error. Por ejemplo:
   A = np.array([[1, 2]])
   B = np.array([5])
   result = A + B  # Esto generará un error
  1. Mal uso de broadcasting: No todos los pares de shapes son válidos para broadcasting. Si un tensor es demasiado pequeño o tiene dimensiones incorrectas, se producirá un error. Por ejemplo:
   A = np.array([1, 2])
   B = np.array([[5]])
   result = A + B  # Esto generará un error
  1. Dimensiones incoherentes: Si las dimensiones no están alineadas en el mismo lugar, se puede obtener un resultado inesperado o un error de dimensión incorrecta.

Checklist accionable

Para asegurarte de que estás trabajando correctamente con shapes y broadcasting:

  1. Verifica los shapes: Antes de realizar cualquier operación, verifica siempre los shapes de tus tensores.
  2. Comprueba la compatibilidad: Asegúrate de que las dimensiones coinciden o son compatibles para el broadcasting.
  3. Usa ejemplos pequeños y concretos: Trabaja con ejemplos simples antes de pasar a problemas más complejos.
  4. Utiliza funciones de diagnóstico: Mira la documentación de NumPy para funciones que pueden ayudarte a diagnosticar posibles errores de shapes o broadcasting.

Cierre

Siguientes pasos

Ahora que has aprendido sobre shapes y broadcasting, aquí tienes algunos pasos siguientes:

  • Práctica constante: Trata con diferentes shapes y experimenta con broadcasting.
  • Estudiar casos prácticos: Analiza cómo las redes neuronales utilizan shapes y broadcasting en su proceso de entrenamiento.
  • Explorar más profundamente: Aprende sobre otras funciones avanzadas de NumPy relacionadas con shapes y broadcasting.

¡Esperamos que este artículo te haya sido útil para comprender mejor estos conceptos esenciales en Deep Learning!

Contacto

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