No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

15 Días
13 Hrs
36 Min
44 Seg

Procesamiento de datos: preparación del DataLoader()

14/24
Recursos

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

```python device = torch.device( "cuda" if torch.cuda.is_available() else "cpu") #cambiar de cpu a gpu de forma manual #Batch de textos 8 def collate_batch(batch): label_list=[] #etiqueta text_list=[] # textos batch offsets=[0] # posicion de incio for (_label, _text) in batch: label_list.append(label_pipeline(_label)) processed_text = torch.tensor(texto_pipeline(_text),dtype=torch.int64) text_list.append(processed_text) offsets.apped(processed_text.size(0)) label_list = torch.tensor(label_list, dtype=torch.int64) offsets = torch.tensor(offsets[:-1]).cumsum(dim=0) #delimite text_list = torch.cat(text_list) return label_list.to(device), text_list.to(device), offsets.to(device) ```device = torch.device( "cuda" if torch.cuda.is\_available() else "cpu") #cambiar de cpu a gpu de forma manual#Batch de textos 8def collate\_batch(batch):  label\_list=\[]   #etiqueta  text\_list=\[]    # textos batch  offsets=\[0]     # posicion de incio    for (\_label, \_text) in batch:    label\_list.append(label\_pipeline(\_label))    processed\_text = torch.tensor(texto\_pipeline(\_text),dtype=torch.int64)    text\_list.append(processed\_text)    offsets.apped(processed\_text.size(0))   label\_list = torch.tensor(label\_list, dtype=torch.int64)  offsets = torch.tensor(offsets\[:-1]).cumsum(dim=0) #delimite  text\_list = torch.cat(text\_list)  return label\_list.to(device), text\_list.to(device), offsets.to(device)
Para preparar un `DataLoader` en PyTorch, primero necesitas un conjunto de datos adecuado y luego crear un `DataLoader` que pueda iterar sobre ese conjunto de datos en mini-batches. El `DataLoader` es una herramienta muy útil que permite manejar la carga de datos, la aleatorización y el agrupamiento de muestras. Aquí te muestro cómo puedes hacerlo utilizando un conjunto de datos de texto, como el de AG News, y cómo crear un `DataLoader`: \### Paso 1: Importar las librerías necesarias ```python import torch from torchtext.datasets import AG\_NEWS from torchtext.data.utils import get\_tokenizer from torch.utils.data import DataLoader from torchtext.vocab import build\_vocab\_from\_iterator ``` \### Paso 2: Cargar el conjunto de datos ```python \# Cargar el conjunto de datos AG News train\_iter = AG\_NEWS(split='train') ``` \### Paso 3: Crear un tokenizador y construir el vocabulario ```python \# Crear un tokenizador tokenizador = get\_tokenizer('basic\_english') \# Función para generar tokens def yield\_tokens(data\_iter): for \_, texto in data\_iter: yield tokenizador(texto) \# Construir el vocabulario vocab = build\_vocab\_from\_iterator(yield\_tokens(train\_iter), specials=\["\<unk>"]) vocab.set\_default\_index(vocab\["\<unk>"]) ``` \### Paso 4: Preparar los datos para el DataLoader Para usar el `DataLoader`, necesitas definir cómo quieres convertir cada texto en una secuencia de índices basada en el vocabulario. Esto puede implicar la conversión de textos en tensores. ```python \# Cargar de nuevo el conjunto de datos para que esté fresco train\_iter = AG\_NEWS(split='train') \# Función para convertir texto en índices de vocabulario def process\_text(text): return torch.tensor(\[vocab\[token] for token in tokenizador(text)], dtype=torch.int64) \# Crear una lista de tuplas (texto procesado, etiqueta) data = \[(process\_text(text), label) for label, text in train\_iter] ``` \### Paso 5: Crear el DataLoader ```python \# Crear un DataLoader batch\_size = 16 # Puedes ajustar el tamaño del batch data\_loader = DataLoader(data, batch\_size=batch\_size, shuffle=True) \# Ejemplo de iterar sobre el DataLoader for batch in data\_loader: texts, labels = batch print("Batch de textos:", texts) print("Batch de etiquetas:", labels) break # Solo mostramos el primer batch ``` \### Resumen 1\. \*\*Cargar el conjunto de datos:\*\* Puedes utilizar cualquier conjunto de datos de texto compatible. 2\. \*\*Tokenizar y construir vocabulario:\*\* Convierte los textos en índices que el modelo puede entender. 3\. \*\*Preparar los datos:\*\* Asegúrate de que cada texto está representado como un tensor. 4\. \*\*Crear el DataLoader:\*\* Esto facilita el procesamiento por lotes y la aleatorización. Esto te permitirá gestionar fácilmente tus datos durante el entrenamiento del modelo en PyTorch.
🤔 el loop de `collate_batch` en list comprehension, quizas solo sea necesario definir la lista `offsets` antes `label_list = [label_pipeline(_label) for _label, _text in batch]` `text_list = [torch.tensor(texto_pipeline(_text), dtype=torch.int64) for _label, _text in batch]` `offsets = [processed_text.size(0) for processed_text in text_list]`