Робота з наборами даних
Для спрощення підготовки даних для моделей машинного навчання та забезпечення ефективної обробки пакетів, перемішування і керування даними, PyTorch надає утиліти TensorDataset
та DataLoader
.
Завантаження та огляд набору даних
Ми використаємо набір даних (wine.csv
), що містить інформацію про різні види вина, включаючи їх характеристики та відповідні мітки класів.
Спочатку завантажимо набір даних і переглянемо його структуру, щоб зрозуміти ознаки та цільову змінну:
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())
Створення TensorDataset
Наступний крок — відокремити ознаки та ціль, перетворити їх у тензори PyTorch і використати ці тензори безпосередньо для створення TensorDataset
. Ми переконаємося, що ознаки мають тип float32
(для роботи з числами з плаваючою комою), а ціль — типу long
(64-бітний цілий тип, придатний для міток).
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
)
Використання DataLoader для пакетної обробки
Для забезпечення пакетної обробки, перемішування та ефективного завантаження даних під час навчання ми обгортаємо TensorDataset
у DataLoader
. Цей крок є ключовим для керування потоком даних до моделі під час навчання, особливо при роботі з великими наборами даних. DataLoader
дозволяє:
- Пакетна обробка: розбивати дані на менші, зручні для обробки частини (пакети) для навчання, що оптимізує використання пам'яті та дозволяє оновлювати градієнти після кожного пакета;
- Перемішування: випадковим чином змінювати порядок у наборі даних, що допомагає уникнути впливу початкового порядку та запобігає навчанню моделі хибним шаблонам;
- Ефективне завантаження: автоматично обробляти отримання та попередню обробку даних для кожного пакета під час навчання, зменшуючи накладні витрати.
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 )
З такою конфігурацією DataLoader
забезпечує ефективну передачу пакетів даних до моделі та у випадковому порядку. Це особливо важливо для навчання нейронних мереж, оскільки допомагає моделі краще узагальнювати на невідомих даних.
Ітерація по DataLoader
Тепер можна ітеруватися по DataLoader
, щоб отримувати пакети даних. Кожен пакет містить кортеж (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)
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 5
Робота з наборами даних
Свайпніть щоб показати меню
Для спрощення підготовки даних для моделей машинного навчання та забезпечення ефективної обробки пакетів, перемішування і керування даними, PyTorch надає утиліти TensorDataset
та DataLoader
.
Завантаження та огляд набору даних
Ми використаємо набір даних (wine.csv
), що містить інформацію про різні види вина, включаючи їх характеристики та відповідні мітки класів.
Спочатку завантажимо набір даних і переглянемо його структуру, щоб зрозуміти ознаки та цільову змінну:
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())
Створення TensorDataset
Наступний крок — відокремити ознаки та ціль, перетворити їх у тензори PyTorch і використати ці тензори безпосередньо для створення TensorDataset
. Ми переконаємося, що ознаки мають тип float32
(для роботи з числами з плаваючою комою), а ціль — типу long
(64-бітний цілий тип, придатний для міток).
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
)
Використання DataLoader для пакетної обробки
Для забезпечення пакетної обробки, перемішування та ефективного завантаження даних під час навчання ми обгортаємо TensorDataset
у DataLoader
. Цей крок є ключовим для керування потоком даних до моделі під час навчання, особливо при роботі з великими наборами даних. DataLoader
дозволяє:
- Пакетна обробка: розбивати дані на менші, зручні для обробки частини (пакети) для навчання, що оптимізує використання пам'яті та дозволяє оновлювати градієнти після кожного пакета;
- Перемішування: випадковим чином змінювати порядок у наборі даних, що допомагає уникнути впливу початкового порядку та запобігає навчанню моделі хибним шаблонам;
- Ефективне завантаження: автоматично обробляти отримання та попередню обробку даних для кожного пакета під час навчання, зменшуючи накладні витрати.
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 )
З такою конфігурацією DataLoader
забезпечує ефективну передачу пакетів даних до моделі та у випадковому порядку. Це особливо важливо для навчання нейронних мереж, оскільки допомагає моделі краще узагальнювати на невідомих даних.
Ітерація по DataLoader
Тепер можна ітеруватися по DataLoader
, щоб отримувати пакети даних. Кожен пакет містить кортеж (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)
Дякуємо за ваш відгук!