Вопрос о создании набора данных Tensorflow из данных, которые слишком велики для оперативной памяти (с перемешиванием) - PullRequest
0 голосов
/ 14 января 2019

У меня есть 60 ГБ файлов .npy , распределенных по 20 файлам. Я хочу построить нейронную сеть в tensorflow, чтобы учиться на этих данных.

Я планирую тренироваться на 19 файлах, чтобы протестировать на 1 файле. Каждый файл содержит примерно 80 столбцов данных x и 1 столбец категориальных данных y. Типы данных np.float64 и np.int64. Я не могу уменьшить типы данных до меньших размеров, потому что потерю ценные данные при ошибках округления.

У меня нет проблем с загрузкой данных в мою нейронную сеть, когда я загружаю один файл, но у меня возникают проблемы с обучением, потому что мне нужно изучать все данных. Я не могу изучать файлы в последовательном порядке (например, тренироваться на файлах 1-19 в порядке 1, 2, 3, ..., 19). Мне нужно как-то перемешать все данных для каждой эпохи.

Я читал сообщения типа , этот , который выглядит почти идентично моему вопросу. Тем не менее, мой вопрос другой, потому что мне нужно перетасовать несколько файлов. Я не видел такого ответа на stackoverflow.

1 Ответ

0 голосов
/ 15 января 2019

В сообщении, на которое вы ссылались, объясняется, как получить TFRecordDataset для каждого из 19 файлов данных. Затем вы можете использовать tf.data.Dataset.zip для объединения наборов TfRecordDatasets в один набор данных. На этот набор данных вы можете применить случайное перемешивание. Подробности см. В этом руководстве по тензорному потоку .

Способ, которым shuffle tf.data.Dataset работает, заключается в загрузке буфера данных и его перемешивании. Как только он используется, загружается и перетасовывается следующий фрагмент данных размера буфера. Я предполагаю, что вы можете увеличить случайность, если нужно, разделив свои 19 файлов на более мелкие файлы, но вы заплатите за эффективность вычислений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...