Travail Avec les Ensembles de Données
Pour simplifier la préparation des données pour les modèles d'apprentissage automatique et permettre un traitement par lots efficace, le mélange aléatoire et la gestion des données, PyTorch propose les utilitaires TensorDataset
et DataLoader
.
Chargement et inspection du jeu de données
Nous utiliserons un jeu de données (wine.csv
) contenant des informations sur différents types de vin, incluant leurs caractéristiques et les étiquettes de classe correspondantes.
Tout d'abord, procédons au chargement du jeu de données et inspectons sa structure afin de comprendre les caractéristiques et la variable cible :
123import pandas as pd wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') print(wine_df.head())
Création d'un TensorDataset
L'étape suivante consiste à séparer les caractéristiques et la cible, les convertir en tenseurs PyTorch, puis à utiliser ces tenseurs directement pour créer un TensorDataset
. Nous veillerons à ce que les caractéristiques soient de type float32
(pour la gestion des nombres à virgule flottante) et que la cible soit de type long
(un entier 64 bits adapté aux étiquettes).
import pandas as pd
import torch
from torch.utils.data import TensorDataset
wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv')
# Separate features and target
features = wine_df.drop(columns='quality').values
target = wine_df['quality'].values
# Create TensorDataset
wine_dataset = TensorDataset(
torch.tensor(features, dtype=torch.float32), # Features tensor
torch.tensor(target, dtype=torch.long) # Target tensor
)
Utilisation de DataLoader pour le traitement par lots
Pour faciliter le traitement par lots, le mélange et le chargement efficace des données pendant l'entraînement, nous encapsulons le TensorDataset
dans un DataLoader
. Cette étape est essentielle pour gérer le flux de données vers le modèle lors de l'entraînement, en particulier lors du traitement de grands ensembles de données. Le DataLoader
permet de :
- Traiter par lots : diviser les données en petits groupes gérables (lots) pour l'entraînement, ce qui optimise l'utilisation de la mémoire et permet des mises à jour du gradient après chaque lot ;
- Mélanger : randomiser l'ordre de l'ensemble de données, ce qui aide à casser tout ordre inhérent dans les données et empêche le modèle d'apprendre des schémas non pertinents ;
- Chargement efficace : gérer automatiquement la récupération et le prétraitement des données pour chaque lot pendant l'entraînement, réduisant ainsi la surcharge.
123456789101112131415161718import pandas as pd import torch from torch.utils.data import TensorDataset, DataLoader wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') # Separate features and target features = wine_df.drop(columns='quality').values target = wine_df['quality'].values # Create TensorDataset wine_dataset = TensorDataset( torch.tensor(features, dtype=torch.float32), # Features tensor torch.tensor(target, dtype=torch.long) # Target tensor ) # Wrap the dataset in a DataLoader wine_loader = DataLoader( wine_dataset, # TensorDataset batch_size=32, # Number of samples per batch shuffle=True # Randomize the order of the data )
Avec cette configuration, le DataLoader
garantit que le modèle reçoit des lots de données de manière efficace et dans un ordre aléatoire. Ceci est particulièrement important pour l'entraînement des réseaux de neurones, car cela aide le modèle à mieux généraliser sur des données non vues.
Parcours du DataLoader
Nous pouvons maintenant parcourir le DataLoader
pour accéder aux lots de données. Chaque lot contient un tuple (batch_features, batch_targets)
:
123456789101112131415161718192021222324import pandas as pd import torch from torch.utils.data import TensorDataset, DataLoader wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') # Separate features and target features = wine_df.drop(columns='quality').values target = wine_df['quality'].values # Create TensorDataset wine_dataset = TensorDataset( torch.tensor(features, dtype=torch.float32), # Features tensor torch.tensor(target, dtype=torch.long) # Target tensor ) # Wrap the dataset in a DataLoader wine_loader = DataLoader( wine_dataset, # TensorDataset batch_size=32, # Number of samples per batch shuffle=True # Randomize the order of the data ) # Iterate through batches for batch_idx, (batch_features, batch_targets) in enumerate(wine_loader): print(f"Batch {batch_idx+1}") print(f"Features: {batch_features}") print(f"Targets: {batch_targets}") print("-" * 30)
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 5
Travail Avec les Ensembles de Données
Glissez pour afficher le menu
Pour simplifier la préparation des données pour les modèles d'apprentissage automatique et permettre un traitement par lots efficace, le mélange aléatoire et la gestion des données, PyTorch propose les utilitaires TensorDataset
et DataLoader
.
Chargement et inspection du jeu de données
Nous utiliserons un jeu de données (wine.csv
) contenant des informations sur différents types de vin, incluant leurs caractéristiques et les étiquettes de classe correspondantes.
Tout d'abord, procédons au chargement du jeu de données et inspectons sa structure afin de comprendre les caractéristiques et la variable cible :
123import pandas as pd wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') print(wine_df.head())
Création d'un TensorDataset
L'étape suivante consiste à séparer les caractéristiques et la cible, les convertir en tenseurs PyTorch, puis à utiliser ces tenseurs directement pour créer un TensorDataset
. Nous veillerons à ce que les caractéristiques soient de type float32
(pour la gestion des nombres à virgule flottante) et que la cible soit de type long
(un entier 64 bits adapté aux étiquettes).
import pandas as pd
import torch
from torch.utils.data import TensorDataset
wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv')
# Separate features and target
features = wine_df.drop(columns='quality').values
target = wine_df['quality'].values
# Create TensorDataset
wine_dataset = TensorDataset(
torch.tensor(features, dtype=torch.float32), # Features tensor
torch.tensor(target, dtype=torch.long) # Target tensor
)
Utilisation de DataLoader pour le traitement par lots
Pour faciliter le traitement par lots, le mélange et le chargement efficace des données pendant l'entraînement, nous encapsulons le TensorDataset
dans un DataLoader
. Cette étape est essentielle pour gérer le flux de données vers le modèle lors de l'entraînement, en particulier lors du traitement de grands ensembles de données. Le DataLoader
permet de :
- Traiter par lots : diviser les données en petits groupes gérables (lots) pour l'entraînement, ce qui optimise l'utilisation de la mémoire et permet des mises à jour du gradient après chaque lot ;
- Mélanger : randomiser l'ordre de l'ensemble de données, ce qui aide à casser tout ordre inhérent dans les données et empêche le modèle d'apprendre des schémas non pertinents ;
- Chargement efficace : gérer automatiquement la récupération et le prétraitement des données pour chaque lot pendant l'entraînement, réduisant ainsi la surcharge.
123456789101112131415161718import pandas as pd import torch from torch.utils.data import TensorDataset, DataLoader wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') # Separate features and target features = wine_df.drop(columns='quality').values target = wine_df['quality'].values # Create TensorDataset wine_dataset = TensorDataset( torch.tensor(features, dtype=torch.float32), # Features tensor torch.tensor(target, dtype=torch.long) # Target tensor ) # Wrap the dataset in a DataLoader wine_loader = DataLoader( wine_dataset, # TensorDataset batch_size=32, # Number of samples per batch shuffle=True # Randomize the order of the data )
Avec cette configuration, le DataLoader
garantit que le modèle reçoit des lots de données de manière efficace et dans un ordre aléatoire. Ceci est particulièrement important pour l'entraînement des réseaux de neurones, car cela aide le modèle à mieux généraliser sur des données non vues.
Parcours du DataLoader
Nous pouvons maintenant parcourir le DataLoader
pour accéder aux lots de données. Chaque lot contient un tuple (batch_features, batch_targets)
:
123456789101112131415161718192021222324import pandas as pd import torch from torch.utils.data import TensorDataset, DataLoader wine_df = pd.read_csv('https://staging-content-media-cdn.codefinity.com/courses/1dd2b0f6-6ec0-40e6-a570-ed0ac2209666/section_2/wine.csv') # Separate features and target features = wine_df.drop(columns='quality').values target = wine_df['quality'].values # Create TensorDataset wine_dataset = TensorDataset( torch.tensor(features, dtype=torch.float32), # Features tensor torch.tensor(target, dtype=torch.long) # Target tensor ) # Wrap the dataset in a DataLoader wine_loader = DataLoader( wine_dataset, # TensorDataset batch_size=32, # Number of samples per batch shuffle=True # Randomize the order of the data ) # Iterate through batches for batch_idx, (batch_features, batch_targets) in enumerate(wine_loader): print(f"Batch {batch_idx+1}") print(f"Features: {batch_features}") print(f"Targets: {batch_targets}") print("-" * 30)
Merci pour vos commentaires !