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

  1. Creación de Tensores
  2. Operaciones Matemáticas Básicas
  3. Indexación y Slicing
  4. Cambio de Forma (Reshape)
  5. Operaciones de Agregación
  6. Ejercicios Prácticos

  1. 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

# Crear un tensor de tamaño 3x3 con valores aleatorios
tensor_b = torch.rand(3, 3)
print(tensor_b)

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)

  1. 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)

  1. Indexación y Slicing

Indexación

# Acceder a un elemento específico
element = tensor_a[1]
print(element)

Slicing

# Acceder a una sub-sección del tensor
sub_tensor = tensor_a[1:3]
print(sub_tensor)

  1. 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

# Transponer un tensor
transposed_tensor = tensor_g.t()
print(transposed_tensor)

  1. 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)

  1. Ejercicios Prácticos

Ejercicio 1: Creación y Operaciones Básicas

  1. Crea un tensor de tamaño 4x4 con valores aleatorios.
  2. Suma este tensor con un tensor de unos del mismo tamaño.
  3. Multiplica el resultado por 2.
  4. 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

  1. Crea un tensor de tamaño 3x3 con valores del 1 al 9.
  2. Accede al elemento en la posición (2, 2).
  3. Extrae la primera fila del tensor.
  4. 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.

© Copyright 2024. Todos los derechos reservados