У меня очень длинный фрейм данных (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 об этом?