Файл набора данных Faster pytorch - PullRequest
0 голосов
/ 14 марта 2019

У меня следующая проблема, у меня есть много файлов трехмерных томов, которые я открываю, чтобы извлечь кучу пустых массивов. Я хочу получить эти массивы случайным образом, т. Е. В худшем случае я открываю столько трехмерных томов, сколько я хочу получить, если все эти массивы находятся в отдельных файлах. IO здесь не велик, я открываю большой файл только для того, чтобы получить из него небольшой массив с пустым фрагментом. Любая идея, как я могу хранить все эти массивы, чтобы IO лучше? Я не могу предварительно прочитать все массивы и сохранить их все в одном файле, потому что тогда этот файл будет слишком большим, чтобы открыть его для оперативной памяти.

Я посмотрел на LMDB, но, похоже, все о Кафе. Есть идеи, как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Я перебрал свой набор данных, создал файл hdf5 и сохранил элементы в hdf5.Оказывается, когда hdf5 открыт, он не загружает все данные в оперативную память, вместо этого он загружает заголовок.Затем заголовок используется для извлечения данных по запросу, вот как я решил свою проблему.

Ссылка: http://www.machinelearninguru.com/deep_learning/data_preparation/hdf5/hdf5.html

0 голосов
/ 14 марта 2019

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

Обратите внимание, что здесь вы можете найти компромисс с размером урожая: экономя больше урожаев, чем нужно для ввода, вы все равно можете делать случайное увеличение урожая намуха.Если вы сохраняете перекрывающиеся урожаи на этапе предварительной обработки, то вы можете гарантировать, что все возможные случайные урожаи исходного набора данных все еще могут быть получены.

В качестве альтернативы вы можете попробовать использовать пользовательский загрузчик данных, который сохраняет полные тома.для нескольких партий.Будьте осторожны, это может создать некоторую корреляцию между партиями.Поскольку многие алгоритмы машинного обучения основаны на выборках iid (например, Stochastic Gradient Descent), коррелированные партии могут легко вызвать серьезную путаницу.

...