Преобразование данных, сохраненных в формате tfrecord, в качестве входных данных для модели lstm Keras в Tensorflow и подгонка модели к этим данным - PullRequest
0 голосов
/ 08 февраля 2020

У меня очень длинный фрейм данных (25 миллионов строк x 500 столбцов), к которому я могу получить доступ в виде файла csv или файла паркета, но могу загрузить в оперативную память моего P C.

Данные должны быть соответствующим образом сформированы, чтобы стать входными данными для модели Keras LSTM (Tensorflow 2), с заданным желаемым числом временных меток на выборку и желаемым количеством выборок за партию .

Это мой второй пост в этой теме. Мне уже дали совет преобразовать данные в формат tfrecord.

Поскольку моей исходной средой будет PySpark, способ сделать это преобразование будет следующим:

myDataFrame.write.format("tfrecords").option("writeLocality", "local").save("/path") 

Как преобразовать несколько файлов паркета в файлы TFrecord, используя SPARK?

Предполагая теперь, что это было сделано, и чтобы упростить вещи и сделать их конкретными и воспроизводимыми, давайте предположим, что в кадре данных есть 1000 строк x 3 столбца, где первый два столбца являются объектами, а последний является целью, в то время как каждая строка соответствует временной отметке.

Например, первый столбец - это температура, второй столбец - wind_speed, а третий столбец (цель) - energy_consumpment. Каждый ряд соответствует часу. Набор данных содержит наблюдения 1000 часов подряд. Мы предполагаем, что потребление энергии в любой данный час является функцией состояния атмосферы за несколько часов до этого. Поэтому мы хотим использовать модель lstm для оценки потребления энергии. Мы решили добавить в модель lstm выборки, каждая из которых содержит данные за предыдущие 5 часов (т. Е. 5 строк на выборку). Для простоты предположим, что цель была сдвинута назад на один час, так что срез data[0:4, :-1] имеет цель data[3, -1]. Предположим, что batch_size = 32.

Данные находятся на нашем жестком диске в формате .tfrecords. Мы не можем загрузить все данные в нашу оперативную память.

Как бы мы go об этом?

1 Ответ

0 голосов
/ 08 февраля 2020

Я не понимаю вопроса. Это работает из коробки с tfrecord s:

# this will not load all data into RAM
dataset = tf.data.TFRecordDataset("./path_to_tfrecord.tfrecord")
k = 0
for sample in dataset:
  print(sample.numpy())

для обучения

model.fit(train_data=dataset)

Можете ли вы дать несколько образцов того, что напечатано? (С "...", чтобы укоротить материал при необходимости).

...