разница между набором данных и набором данных TensorDataset в PyTorch

#deep-learning #pytorch

Вопрос:

в чем разница между «torch.utils.data.TensorDataset» и «torch.utils.данные.Набор данных» — документы об этом неясны, и я не смог найти никаких ответов в Google.

Ответ №1:

Dataset Класс-это абстрактный класс, который используется для определения новых типов (пользовательских) наборов данных. Вместо TensorDataset этого это готовый к использованию класс для представления ваших данных в виде списка тензоров.

Вы можете определить свой пользовательский набор данных следующим образом:

 class CustomDataset(torch.utils.data.Dataset):

  def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    # Your code

    self.instances = your_data

  def __getitem__(self, idx):
    return self.instances[idx] # In case you stored your data on a list called instances

  def __len__(self):
    return len(self.instances)
 

Если вы просто хотите создать набор данных, содержащий тензоры для входных объектов и меток, то используйте TensorDataset непосредственно:

 dataset = TensorDataset(input_features, labels)
 

Обратите внимание, что input_features и labels должно совпадать по длине первого измерения.