Introducción
En este proyecto, aprenderás cómo implementar una función para dividir un conjunto de datos en mini-lotes, que es una técnica común utilizada en el entrenamiento de aprendizaje profundo.
🎯 Tareas
En este proyecto, aprenderás:
- Cómo implementar la función
data_pipelinepara dividir un conjunto de datos en mini-lotes - Cómo probar la función
data_pipelinepara asegurarse de que funcione como se espera
🏆 Logros
Después de completar este proyecto, podrás:
- Dividir un conjunto de datos en mini-lotes utilizando la función
data_pipeline - Verificar la funcionalidad de la función
data_pipelinea través de las pruebas
Implementar Mini-Lotes
En este paso, aprenderás cómo implementar la función data_pipeline para dividir un conjunto de datos en mini-lotes.
Abra el archivo data_pipeline.py en su editor de texto.
Implemente la función data_pipeline de acuerdo con los requisitos:
- La función debe tomar dos parámetros:
data(una lista de listas que contiene enteros) ybatch_size(un entero que representa el tamaño de cada mini-lote). - La función debe devolver un generador que produzca lotes de los datos de entrada, donde cada lote contiene
batch_sizelistas de enteros. - Si la cantidad restante de datos es menor que
batch_size, la función debe emitir todas las muestras restantes.
A continuación, se muestra la función data_pipeline completada:
from typing import Generator, List
def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
"""
Esta función toma una lista de listas que contiene enteros y la divide en 'lotes' más pequeños de un tamaño especificado.
Devuelve un generador que produce secuencialmente estos lotes.
Parámetros:
data (List[List[int]]): El conjunto de datos de entrada, una lista de listas que contiene enteros.
batch_size (int): El tamaño de cada lote, es decir, el número de listas de enteros que se deben incluir en cada lote.
Devuelve:
Generator[List[List[int]], None, None]: Un generador que produce lotes de los datos de entrada, donde cada lote contiene 'batch_size' listas de enteros.
"""
for i in range(0, len(data), batch_size):
batch_data = data[i : i + batch_size]
yield batch_data
Guarde el archivo data_pipeline.py.
Probar los Mini-Lotes
En este paso, probarás la función data_pipeline para asegurarte de que funcione como se espera.
Abre el archivo data_pipeline.py en tu editor de texto.
Agrega el siguiente código al final del archivo para probar la función data_pipeline:
if __name__ == "__main__":
data = [[1, 2], [1, 3], [3, 5], [2, 1], [3, 3]]
batch_size = 2
batch_data = data_pipeline(data, batch_size)
for batch in batch_data:
print(f"{batch=}")
Guarda el archivo data_pipeline.py.
Ejecuta el archivo data_pipeline.py en tu terminal:
python data_pipeline.py
La salida debe ser:
batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]
Esta salida confirma que la función data_pipeline está funcionando como se espera, dividiendo el conjunto de datos de entrada en mini-lotes de tamaño 2.
Resumen
¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.



