Набор данных не помещается в памяти
У меня есть MNIST
как набор данных, который не помещается в памяти (память процесса, а не память GPU). Мой набор данных 4 ГБ.
Это не TFLearn
вопрос.
Насколько я знаю model.fit
требуется массив для x
а также y
,
Пример TFLearn:
model.fit(x, y, n_epoch=10, validation_set=(val_x, val_y))
Мне было интересно, есть ли способ, где мы можем передать "пакетный итератор" вместо массива. В основном для каждой партии я бы загружал необходимые данные с диска.
Таким образом, я не столкнулся бы с ошибками переполнения памяти процесса.
РЕДАКТИРОВАТЬ np.memmap
может быть вариантом. Но я не вижу, как пропустить первые несколько байтов, которые составляют заголовок.
1 ответ
Вы можете использовать API набора данных.
"API набора данных поддерживает различные форматы файлов, так что вы можете обрабатывать большие наборы данных, которые не помещаются в памяти"
В основном входной конвейер станет частью вашего графика.
Если память все еще является проблемой, вы можете использовать генератор для создания tf.data.Dataset
, Кроме того, вы можете ускорить процесс, подготовив tfrecords для создания своего набора данных.