En este tema, aprenderemos sobre las operaciones básicas con tensores en PyTorch. Los tensores son la estructura de datos fundamental en PyTorch y son similares a los arrays de NumPy, pero con capacidades adicionales para ser utilizados en GPUs y para la diferenciación automática.
Contenido
- Creación de Tensores
 - Operaciones Matemáticas Básicas
 - Indexación y Slicing
 - Cambio de Forma (Reshape)
 - Operaciones de Agregación
 - Ejercicios Prácticos
 
- Creación de Tensores
 
Tensores desde Listas
import torch # Crear un tensor desde una lista tensor_a = torch.tensor([1, 2, 3, 4]) print(tensor_a)
Tensores Aleatorios
Tensores de Ceros y Unos
# Crear un tensor de ceros de tamaño 2x2 tensor_c = torch.zeros(2, 2) print(tensor_c) # Crear un tensor de unos de tamaño 2x2 tensor_d = torch.ones(2, 2) print(tensor_d)
- Operaciones Matemáticas Básicas
 
Suma y Resta
# Suma de tensores tensor_sum = tensor_a + tensor_d print(tensor_sum) # Resta de tensores tensor_diff = tensor_a - tensor_d print(tensor_diff)
Multiplicación y División
# Multiplicación de tensores tensor_mul = tensor_a * tensor_d print(tensor_mul) # División de tensores tensor_div = tensor_a / tensor_d print(tensor_div)
Producto Punto
# Producto punto de dos tensores tensor_e = torch.tensor([1, 2]) tensor_f = torch.tensor([3, 4]) dot_product = torch.dot(tensor_e, tensor_f) print(dot_product)
- Indexación y Slicing
 
Indexación
Slicing
- Cambio de Forma (Reshape)
 
Cambio de Forma
# Cambiar la forma de un tensor tensor_g = torch.rand(2, 3) reshaped_tensor = tensor_g.view(3, 2) print(reshaped_tensor)
Transposición
- Operaciones de Agregación
 
Suma y Promedio
# Suma de todos los elementos sum_all = tensor_a.sum() print(sum_all) # Promedio de todos los elementos mean_all = tensor_a.mean() print(mean_all)
Máximo y Mínimo
# Máximo y mínimo de todos los elementos max_val = tensor_a.max() min_val = tensor_a.min() print(max_val, min_val)
- Ejercicios Prácticos
 
Ejercicio 1: Creación y Operaciones Básicas
- Crea un tensor de tamaño 4x4 con valores aleatorios.
 - Suma este tensor con un tensor de unos del mismo tamaño.
 - Multiplica el resultado por 2.
 - Encuentra el valor máximo y mínimo del tensor resultante.
 
Solución
# Paso 1
tensor_h = torch.rand(4, 4)
print("Tensor H:\n", tensor_h)
# Paso 2
tensor_ones = torch.ones(4, 4)
tensor_sum = tensor_h + tensor_ones
print("Suma:\n", tensor_sum)
# Paso 3
tensor_mul = tensor_sum * 2
print("Multiplicación:\n", tensor_mul)
# Paso 4
max_val = tensor_mul.max()
min_val = tensor_mul.min()
print("Máximo:", max_val)
print("Mínimo:", min_val)Ejercicio 2: Indexación y Slicing
- Crea un tensor de tamaño 3x3 con valores del 1 al 9.
 - Accede al elemento en la posición (2, 2).
 - Extrae la primera fila del tensor.
 - Cambia la forma del tensor a 1x9.
 
Solución
# Paso 1
tensor_i = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("Tensor I:\n", tensor_i)
# Paso 2
element = tensor_i[2, 2]
print("Elemento en (2, 2):", element)
# Paso 3
first_row = tensor_i[0, :]
print("Primera fila:", first_row)
# Paso 4
reshaped_tensor = tensor_i.view(1, 9)
print("Tensor re-formado:\n", reshaped_tensor)Conclusión
En esta sección, hemos cubierto las operaciones básicas con tensores en PyTorch, incluyendo la creación, operaciones matemáticas, indexación, cambio de forma y operaciones de agregación. Estas habilidades son fundamentales para trabajar con PyTorch y construir modelos de aprendizaje profundo. En el próximo módulo, profundizaremos en la construcción de redes neuronales utilizando estos conceptos básicos.
PyTorch: De Principiante a Avanzado
Módulo 1: Introducción a PyTorch
- ¿Qué es PyTorch?
 - Configuración del Entorno
 - Operaciones Básicas con Tensores
 - Autograd: Diferenciación Automática
 
Módulo 2: Construcción de Redes Neuronales
- Introducción a las Redes Neuronales
 - Creación de una Red Neuronal Simple
 - Funciones de Activación
 - Funciones de Pérdida y Optimización
 
Módulo 3: Entrenamiento de Redes Neuronales
- Carga y Preprocesamiento de Datos
 - Bucle de Entrenamiento
 - Validación y Pruebas
 - Guardar y Cargar Modelos
 
Módulo 4: Redes Neuronales Convolucionales (CNNs)
- Introducción a las CNNs
 - Construcción de una CNN desde Cero
 - Aprendizaje por Transferencia con Modelos Preentrenados
 - Ajuste Fino de CNNs
 
Módulo 5: Redes Neuronales Recurrentes (RNNs)
- Introducción a las RNNs
 - Construcción de una RNN desde Cero
 - Redes de Memoria a Largo Plazo (LSTM)
 - Unidades Recurrentes con Puerta (GRUs)
 
Módulo 6: Temas Avanzados
- Redes Generativas Antagónicas (GANs)
 - Aprendizaje por Refuerzo con PyTorch
 - Despliegue de Modelos PyTorch
 - Optimización del Rendimiento
 
