Introduction
Dans ce projet, vous allez apprendre à implémenter une fonction pour diviser un ensemble de données en mini-lots, qui est une technique couramment utilisée dans la formation en apprentissage profond.
🎯 Tâches
Dans ce projet, vous allez apprendre :
- Comment implémenter la fonction
data_pipelinepour diviser un ensemble de données en mini-lots - Comment tester la fonction
data_pipelinepour vous assurer qu'elle fonctionne comme prévu
🏆 Réalisations
Après avoir terminé ce projet, vous serez capable de :
- Diviser un ensemble de données en mini-lots à l'aide de la fonction
data_pipeline - Vérifier la fonctionnalité de la fonction
data_pipelinepar le biais des tests
Implémenter les mini-lots
Dans cette étape, vous allez apprendre à implémenter la fonction data_pipeline pour diviser un ensemble de données en mini-lots.
Ouvrez le fichier data_pipeline.py dans votre éditeur de texte.
Implémentez la fonction data_pipeline selon les exigences suivantes :
- La fonction doit prendre deux paramètres :
data(une liste de listes contenant des entiers) etbatch_size(un entier représentant la taille de chaque mini-lot). - La fonction doit renvoyer un générateur qui produit des lots des données d'entrée, où chaque lot contient
batch_sizelistes d'entiers. - Si la quantité restante de données est inférieure à
batch_size, la fonction doit sortir tous les échantillons restants.
Voici la fonction data_pipeline complétée :
from typing import Generator, List
def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
"""
Cette fonction prend une liste de listes contenant des entiers et la divise en 'lots' plus petits d'une taille spécifiée.
Elle renvoie un générateur qui produit séquentiellement ces lots.
Paramètres :
data (List[List[int]]) : L'ensemble de données d'entrée, une liste de listes contenant des entiers.
batch_size (int) : La taille de chaque lot, c'est-à-dire le nombre de listes d'entiers à inclure dans chaque lot.
Retourne :
Generator[List[List[int]], None, None] : Un générateur produisant des lots des données d'entrée avec chaque lot contenant 'batch_size' listes d'entiers.
"""
for i in range(0, len(data), batch_size):
batch_data = data[i : i + batch_size]
yield batch_data
Enregistrez le fichier data_pipeline.py.
Tester les mini-lots
Dans cette étape, vous allez tester la fonction data_pipeline pour vous assurer qu'elle fonctionne comme prévu.
Ouvrez le fichier data_pipeline.py dans votre éditeur de texte.
Ajoutez le code suivant à la fin du fichier pour tester la fonction 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=}")
Enregistrez le fichier data_pipeline.py.
Exécutez le fichier data_pipeline.py dans votre terminal :
python data_pipeline.py
La sortie devrait être :
batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]
Cette sortie confirme que la fonction data_pipeline fonctionne comme prévu, en divisant l'ensemble de données d'entrée en mini-lots de taille 2.
Résumé
Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.



