Атрибут dataset
Атрибут dataset класса DataLoader хранит ссылку на объект набора данных, который был передан при создании экземпляра загрузчика. Этот атрибут позволяет получить доступ к исходным данным, их меткам и другим свойствам, определённым в пользовательском классе набора данных. Он полезен для проверки содержимого, получения длины набора или выполнения дополнительных операций с данными без создания нового загрузчика.
Синтаксис
dataloader.dataset
Пример
Создадим простой набор данных и загрузчик, а затем обратимся к атрибуту dataset для получения исходных данных:
import torch
from torch.utils.data import DataLoader, TensorDataset
# Создание данных
data = torch.tensor([1, 2, 3, 4, 5])
labels = torch.tensor([0, 1, 0, 1, 0])
dataset = TensorDataset(data, labels)
# Создание загрузчика
dataloader = DataLoader(dataset, batch_size=2)
# Доступ к атрибуту dataset
ds = dataloader.dataset
print(ds)
Результат выполнения кода:
<torch.utils.data.dataset.TensorDataset object at 0x7f8a1c2b3d90>
Пример
Используем атрибут dataset для получения количества элементов и проверки типа данных:
import torch
from torch.utils.data import DataLoader, TensorDataset
# Создание данных
data = torch.tensor([[1, 2], [3, 4], [5, 6]])
labels = torch.tensor([0, 1, 0])
dataset = TensorDataset(data, labels)
# Создание загрузчика
dataloader = DataLoader(dataset, batch_size=2)
# Получение длины набора через атрибут dataset
ds_len = len(dataloader.dataset)
print(f"Length of dataset: {ds_len}")
# Проверка типа данных тензора
t_data = dataloader.dataset.tensors[0]
print(f"Data type: {t_data.dtype}")
Результат выполнения кода:
"Length of dataset: 3"
"Data type: torch.int64"
Пример
Покажем, как атрибут dataset позволяет получить доступ к пользовательским свойствам набора данных:
import torch
from torch.utils.data import DataLoader, Dataset
# Пользовательский набор данных
class CustomDataset(Dataset):
def __init__(self, data, labels):
self.data = data
self.labels = labels
self.description = "Custom dataset example"
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx], self.labels[idx]
# Создание данных
data = torch.tensor([10, 20, 30, 40])
labels = torch.tensor([1, 0, 1, 0])
dataset = CustomDataset(data, labels)
# Создание загрузчика
dataloader = DataLoader(dataset, batch_size=2)
# Доступ к пользовательскому свойству
desc = dataloader.dataset.description
print(desc)
Результат выполнения кода:
"Custom dataset example"
Смотрите также
-
класс
DataLoader,
который создаёт итератор для загрузки данных -
метод
__iter__,
который возвращает итератор по батчам данных -
метод
__len__,
который возвращает количество батчей в загрузчике -
атрибут
batch_size,
который содержит размер батча загрузчика