Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Trabalhando com Conjuntos de Dados | Conceitos Mais Avançados
Essenciais do PyTorch

bookTrabalhando com Conjuntos de Dados

Para simplificar a preparação de dados para modelos de aprendizado de máquina e possibilitar processamento em lote, embaralhamento e manipulação eficiente de dados, o PyTorch fornece as utilidades TensorDataset e DataLoader.

Carregando e Inspecionando o Conjunto de Dados

Será utilizado um conjunto de dados (wine.csv) contendo informações sobre diferentes tipos de vinho, incluindo suas características e os rótulos de classe correspondentes.

Primeiramente, carregue o conjunto de dados e inspecione sua estrutura para compreender as características e a variável alvo:

123
import 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())
copy

Criando um TensorDataset

O próximo passo é separar as features e o alvo, convertê-los em tensores PyTorch e utilizar esses tensores diretamente para criar um TensorDataset. Garantimos que as features sejam do tipo float32 (para lidar com números de ponto flutuante) e o alvo do tipo long (um tipo inteiro de 64 bits adequado para rótulos).

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
)

Utilizando DataLoader para Processamento em Lotes

Para facilitar o processamento em lotes, embaralhamento e carregamento eficiente dos dados durante o treinamento, envolvemos o TensorDataset em um DataLoader. Esta etapa é fundamental para gerenciar o fluxo de dados para o modelo durante o treinamento, especialmente ao trabalhar com conjuntos de dados maiores. O DataLoader permite:

  1. Processamento em lotes: dividir os dados em partes menores e gerenciáveis (lotes) para o treinamento, otimizando o uso de memória e permitindo atualizações de gradiente após cada lote;
  2. Embaralhamento: randomizar a ordem do conjunto de dados, o que ajuda a quebrar qualquer ordenação inerente nos dados e impede que o modelo aprenda padrões espúrios;
  3. Carregamento eficiente: lidar automaticamente com a busca e pré-processamento dos dados para cada lote durante o treinamento, reduzindo a sobrecarga.
123456789101112131415161718
import 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 )
copy

Com essa configuração, o DataLoader garante que o modelo receba lotes de dados de forma eficiente e em ordem aleatória. Isso é especialmente importante para o treinamento de redes neurais, pois ajuda o modelo a generalizar melhor para dados não vistos.

Iteração sobre o DataLoader

Agora é possível iterar sobre o DataLoader para acessar lotes de dados. Cada lote contém uma tupla (batch_features, batch_targets):

123456789101112131415161718192021222324
import 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)
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain what the output of the DataLoader iteration looks like?

How do I change the batch size in the DataLoader?

What should I do if my dataset has missing values?

Awesome!

Completion rate improved to 5

bookTrabalhando com Conjuntos de Dados

Deslize para mostrar o menu

Para simplificar a preparação de dados para modelos de aprendizado de máquina e possibilitar processamento em lote, embaralhamento e manipulação eficiente de dados, o PyTorch fornece as utilidades TensorDataset e DataLoader.

Carregando e Inspecionando o Conjunto de Dados

Será utilizado um conjunto de dados (wine.csv) contendo informações sobre diferentes tipos de vinho, incluindo suas características e os rótulos de classe correspondentes.

Primeiramente, carregue o conjunto de dados e inspecione sua estrutura para compreender as características e a variável alvo:

123
import 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())
copy

Criando um TensorDataset

O próximo passo é separar as features e o alvo, convertê-los em tensores PyTorch e utilizar esses tensores diretamente para criar um TensorDataset. Garantimos que as features sejam do tipo float32 (para lidar com números de ponto flutuante) e o alvo do tipo long (um tipo inteiro de 64 bits adequado para rótulos).

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
)

Utilizando DataLoader para Processamento em Lotes

Para facilitar o processamento em lotes, embaralhamento e carregamento eficiente dos dados durante o treinamento, envolvemos o TensorDataset em um DataLoader. Esta etapa é fundamental para gerenciar o fluxo de dados para o modelo durante o treinamento, especialmente ao trabalhar com conjuntos de dados maiores. O DataLoader permite:

  1. Processamento em lotes: dividir os dados em partes menores e gerenciáveis (lotes) para o treinamento, otimizando o uso de memória e permitindo atualizações de gradiente após cada lote;
  2. Embaralhamento: randomizar a ordem do conjunto de dados, o que ajuda a quebrar qualquer ordenação inerente nos dados e impede que o modelo aprenda padrões espúrios;
  3. Carregamento eficiente: lidar automaticamente com a busca e pré-processamento dos dados para cada lote durante o treinamento, reduzindo a sobrecarga.
123456789101112131415161718
import 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 )
copy

Com essa configuração, o DataLoader garante que o modelo receba lotes de dados de forma eficiente e em ordem aleatória. Isso é especialmente importante para o treinamento de redes neurais, pois ajuda o modelo a generalizar melhor para dados não vistos.

Iteração sobre o DataLoader

Agora é possível iterar sobre o DataLoader para acessar lotes de dados. Cada lote contém uma tupla (batch_features, batch_targets):

123456789101112131415161718192021222324
import 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)
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 5
some-alt