Pytorch: несколько наборов данных с несколькими потерями - PullRequest
1 голос
/ 17 апреля 2019

Я использую несколько наборов данных. У меня есть несколько потерь, каждый из которых должен быть оценен на подмножестве этих наборов данных. Я хочу сгенерировать партию из каждого набора данных и оценить каждую потерю во всех соответствующих партиях. Некоторые потери являются попарными (необходимо загружать пары соответствующих точек данных), тогда как другие рассчитываются для отдельных точек данных. Мне нужно спроектировать это так, чтобы можно было легко добавлять новые наборы данных. Есть ли в этом встроенный pytorch? Каков наилучший способ создать это в pytorch? Заранее спасибо.

1 Ответ

0 голосов
/ 17 апреля 2019

Из вашего вопроса не ясно, какие именно настройки.
Однако вы можете иметь несколько экземпляров Dataset s, по одному для каждого из ваших наборов данных.
Поверх ваших наборов данных вы можете реализовать «набор данных с тегами», набор данных, который добавляет «тег» для всех образцов:

class TaggedDataset(data.Dataset):
  def __init__(dataset, tag):
    super(TaggedDataset, self).__init__()
    self.ds_ = dataset
    self.tag_ = tag

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

  def __getitem__(self, index):
    return self.ds_[index], self.tag_

Дайте разные tag каждому набору данных, объедините их все в один ConcatDataset и оберните вокруг него обычный DataLoader.

Теперь в вашем учебном коде

for input, label, tag in my_tagged_loader:
  # process each input according to the dataset tag it got.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...