Пример каждого изображения из набора данных N раз в одной партии - PullRequest
0 голосов
/ 04 мая 2019

В настоящее время я работаю над задачей обучения представлению (глубокие вложения).Набор данных, который я использую, имеет только один пример изображения на объект.Я также использую увеличение.

Во время обучения каждая партия должна содержать N различных расширенных версий одного изображения в наборе данных (dataset[index] всегда возвращает новое случайное преобразование).

Существует ли какое-либо стандартное решение илибиблиотека с DataLoader для этой цели, которая будет работать с torch.utils.data.distributed.DistributedSampler?Если нет, будет ли работать любой DataLoader, унаследованный от torch.utils.data.DataLoader (и вызывающий super().__init__(...)), в распределенном обучении?

1 Ответ

0 голосов
/ 05 мая 2019

Насколько я знаю, это не стандартный способ действий - даже если у вас есть только одна выборка на объект, все равно можно будет выбирать разные изображения из разных объектов в пакете, и в разные эпохи выборочные изображения будутизменился по-разному.

Тем не менее, если вы действительно хотите делать то, что делаете, почему бы просто не написать обертку из вашего набора данных?

class Wrapper(Dataset):
    N = 16
    def __getitem__(self, index):
        sample = [ super().__getitem__(index) for _ in N ]
        sample = torch.stack(sample, dim=0)
        return sample

Тогда каждая ваша партия будет BxNxCxHxW где B - размер партии, N - ваше повторение.Вы можете изменить форму своей партии после того, как получите ее от загрузчика данных.

...