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