Chainer Iterator для файлов, содержащих несколько примеров, без предварительной загрузки

У меня более 100 000 файлов, содержащих более 20 примеров в каждом файле. Количество образцов в файле различается. Как я могу создать итератор с размером пакета ~ 10 в Chainer без предварительной загрузки всех файлов в память?


person www.data-blogger.com    schedule 10.03.2018    source источник
comment
Не могли бы вы добавить рабочий пример к вопросу?   -  person Martin Evans    schedule 10.03.2018
comment
Я хотел бы сохранить его абстрактным, поэтому он применим для большего количества проектов и для других людей.   -  person www.data-blogger.com    schedule 10.03.2018


Ответы (1)


Я думаю, вы можете использовать класс DatasetMixin для определения собственного набора данных. Вы можете переопределить метод get_example(i) для извлечения i-х данных, чтобы вы могли загрузить файл, когда вам понадобятся данные внутри get_example(i). Тем не менее, он все еще нуждается в «предварительном индексировании», что означает, что вам нужно определить, какие i-е данные соответствуют какому файлу.

Ниже приведены ссылки, как определить собственный класс DatasetMixin.

Ссылка: - Учебное пособие по Chainer v3 для начинающих (японский) - Создайте класс набора данных из ваших собственных данных с помощью DatasetMixin

См. официальный пример, который использует DatasetMixin для загрузки изображения по запросу: https://github.com/chainer/chainer/blob/master/examples/imagenet/train_imagenet.py#L39

person corochann    schedule 11.03.2018