Эффективно загружайте большие файлы .npy (›20 ГБ) с помощью загрузчика данных Keras / Tensorflow

В настоящее время я реализую модель машинного обучения, которая использует довольно тяжелое представление данных. Мой набор данных состоит из изображений. Каждое из этих изображений закодировано в матрицу (224, 224, 103), что делает весь набор данных очень тяжелым. Эти матрицы я храню на диске и загружаю во время обучения.

Сейчас я использую мини-пакеты по 8 изображений и загружаю .npy файлы для этих 8 изображений с диска в течение всего процесса обучения. Это медленно, но работает.

Есть ли более эффективный способ сделать это с помощью Keras / Tensorflow (это то, что я использую для кодирования моей модели)? К сожалению, я не смог найти много информации о загрузчике данных, который позволил бы мне это сделать.

Заранее спасибо.


person Megastore    schedule 05.04.2021    source источник


Ответы (1)


У вас есть несколько вариантов сделать это.

Я предполагаю, что преобразования, которые вы выполняете с изображениями, чтобы получить окончательную матрицу (224, 224, 103), очень дороги, и что предварительная обработка при загрузке данных нежелательна. Если это не так, вам может быть полезно прочитать руководство по обработке изображений. .

Я предлагаю вам использовать генератор Python для чтения данных и использовать tf.data для создания конвейера данных для подачи этих .npy файлов в вашу модель. Основная идея очень проста. вы используете оболочку для приема данных из генератора, который будет читать файлы по мере необходимости. Соответствующая документация и примеры находятся здесь.

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

person Mateo Torres    schedule 05.04.2021
comment
Спасибо! Это то, что я искал - person Megastore; 25.04.2021