Introducción a PyTorch: Tensores, DataLoaders y Autograd | Clase 1 – Parte 2 | Curso de Deep Learning 2022

Posted by


En la parte anterior de nuestra Clase 1 del curso de Deep Learning 2022, introdujimos los conceptos básicos de PyTorch y aprendimos sobre tensores, que son la estructura de datos fundamental en PyTorch. En esta segunda parte, nos centraremos en DataLoaders y Autograd, dos características clave de PyTorch que nos permiten gestionar grandes cantidades de datos y realizar cálculos automáticos de gradientes para el entrenamiento de nuestros modelos de Deep Learning.

DataLoaders en PyTorch:

Uno de los desafíos más importantes en el Deep Learning es cómo manejar grandes conjuntos de datos de forma eficiente. En PyTorch, utilizamos DataLoaders para cargar y procesar los datos de entrenamiento, validación y prueba de forma automatizada y eficiente. Un DataLoader nos ayuda a cargar los datos en lotes, a realizar transformaciones en los datos y a distribuirlos al modelo de forma eficiente.

Para crear un DataLoader en PyTorch, primero necesitamos preparar nuestros datos en un objeto Dataset. PyTorch proporciona la clase Dataset que nos permite acceder a los datos de forma individual. Podemos crear una clase personalizada que herede de Dataset y que implemente los métodos len y getitem para acceder a los datos y sus etiquetas.

A continuación, podemos crear un objeto DataLoader que se encargará de cargar los datos en lotes y aplicar transformaciones gracias a la clase DataLoader de PyTorch. Para ello, especificamos el Dataset que vamos a utilizar, el tamaño del lote, si queremos mezclar los datos al cargarlos, si queremos utilizar un número de trabajadores para cargar los datos de forma paralela, entre otros parámetros.

Por ejemplo, si queremos crear un DataLoader para un conjunto de datos de imágenes, podríamos hacerlo de la siguiente manera:

from torchvision import datasets, transforms
from torch.utils.data import DataLoader

# Definir transformaciones
transform = transforms.Compose([transforms.ToTensor()])

# Cargar el conjunto de datos MNIST
train_dataset = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
test_dataset = datasets.MNIST(root='./data', train=False, transform=transform, download=True)

# Crear DataLoader para datos de entrenamiento y prueba
train_loader = DataLoader(dataset=train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(dataset=test_dataset, batch_size=64, shuffle=False)

Con esto, hemos creado DataLoaders para los datos de entrenamiento y prueba del conjunto de datos MNIST, cargando los datos en lotes de tamaño 64 y mezclándolos al cargarlos para el conjunto de entrenamiento.

Autograd en PyTorch:

Otra característica fundamental de PyTorch es Autograd, que nos permite realizar cálculos automáticos de gradientes para la optimización de nuestros modelos de Deep Learning. Autograd en PyTorch es una herramienta que nos facilita el cálculo de derivadas de funciones y nos permite propagar gradientes de forma automática a través de nuestra red neuronal.

Para utilizar Autograd en PyTorch, primero debemos definir nuestras operaciones y tensores como variables que requieren gradiente. Podemos hacerlo estableciendo el atributo requires_grad=True en los tensores que forman parte de los parámetros de nuestra red neuronal. De esta manera, PyTorch rastreará las operaciones que realizamos con estos tensores y calculará automáticamente los gradientes necesarios para optimizar nuestros parámetros.

Por ejemplo, si queremos calcular el gradiente de una función respecto a un conjunto de parámetros, podríamos hacerlo de la siguiente manera:

import torch

# Definir tensores de parámetros que requieren gradiente
x = torch.tensor([3.0], requires_grad=True)
y = torch.tensor([2.0], requires_grad=True)

# Definir función a optimizar
f = x**2 + y**3

# Calcular gradientes
f.backward()

# Mostrar gradientes
print(f'Gradiente de x: {x.grad}')
print(f'Gradiente de y: {y.grad}')

En este ejemplo, hemos definido dos tensores x y y como variables que requieren gradiente, calculado la función f = x^2 + y^3 y posteriormente calculado los gradientes de f con respecto a x y y usando el método backward(). Finalmente, hemos mostrado los gradientes calculados para cada parámetro.

Con esto concluimos la segunda parte de nuestra Clase 1 del curso de Deep Learning 2022, en la que hemos aprendido sobre DataLoaders y Autograd en PyTorch. En la próxima parte, exploraremos cómo utilizar estos conceptos para entrenar modelos de Deep Learning y mejorar su rendimiento. ¡No te lo pierdas!

0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@Viktor-ks1ks
2 months ago

Super buena la clase. Me encantó como explicas.

@marcelotau769
2 months ago

Muy bueno segui asi

@julianyesidcarrenogomez1514
2 months ago

Puedes poner los videos donde explica las matemáticas😢

@javfonseca
2 months ago

acabo de encontrar el canal y que locura, gracias por tomarse el tiempo de hacer divulgación de este tipo, aprendi mucho