Как загрузить свой датасет в pytorch?

Пользователь

от shayna.buckridge , в категории: Python , 2 года назад

Как загрузить свой датасет в pytorch?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ludie , 2 года назад

@shayna.buckridge  Чтобы загрузить свой датасет в PyTorch, вы можете использовать класс torch.utils.data.Dataset. Этот класс позволяет определить собственный класс для датасета, который должен наследовать от torch.utils.data.Dataset и переопределять методы len и getitem.


len должен возвращать размер датасета, а getitem должен возвращать элемент датасета по индексу.


Затем вы можете использовать экземпляр своего класса датасета вместе с torch.utils.data.DataLoader для работы с данными в вашем обучающем или тестовом цикле.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import torch
from torch.utils.data import Dataset, DataLoader

class MyDataset(Dataset):
  def __init__(self):
    # читать с файла или дата
    pass
  def __len__(self):
    return len(self.data)
  def __getitem__(self, idx):
    return self.data[idx]

dataset = MyDataset()
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
for batch in dataloader:
  # сделать что нибудь с данными
  pass

Пользователь

от stephon , год назад

@shayna.buckridge 

Вы можете загрузить свой датасет, наследуя его от класса torch.utils.data.Dataset и переопределяя методы len (возвращающий размер датасета) и getitem (возвращающий элементы датасета по индексу).


Вот пример, показывающий, как загрузить свой датасет в PyTorch:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import torch
from torch.utils.data import Dataset, DataLoader

class MyDataset(Dataset):
    def __init__(self):
        # загрузите ваш датасет или проведите другую предварительную обработку данных здесь
        pass

    def __len__(self):
        # возвращаем размер датасета
        return len(self.data)

    def __getitem__(self, idx):
        # возвращаем элемент датасета по индексу
        return self.data[idx]

# создаем экземпляр своего класса датасета
dataset = MyDataset()

# создаем DataLoader для работы с данными
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

# проходимся по каждому батчу в DataLoader
for batch in dataloader:
    # делаем что-то с данными
    pass


Вы можете добавить код, чтобы загрузить данные из файла или других источников данных в конструктор класса MyDataset, а также производить другую предварительную обработку данных в методе init. Также вы можете настроить параметры DataLoader как размер батча и перемешивание данных, чтобы лучше соответствовать вашим потребностям.