Diviser un ensemble de données en mini-lots

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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_pipeline pour diviser un ensemble de données en mini-lots
  • Comment tester la fonction data_pipeline pour 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_pipeline par le biais des tests

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/AdvancedTopicsGroup -.-> python/generators("Generators") subgraph Lab Skills python/for_loops -.-> lab-300212{{"Diviser un ensemble de données en mini-lots"}} python/lists -.-> lab-300212{{"Diviser un ensemble de données en mini-lots"}} python/function_definition -.-> lab-300212{{"Diviser un ensemble de données en mini-lots"}} python/file_operations -.-> lab-300212{{"Diviser un ensemble de données en mini-lots"}} python/generators -.-> lab-300212{{"Diviser un ensemble de données en mini-lots"}} end

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) et batch_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_size listes 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.

✨ Vérifier la solution et pratiquer

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.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations ! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.