【发布时间】:2020-02-08 11:12:00
【问题描述】:
我有一个很长的数据帧(2500 万行 x 500 列),我可以将其作为 csv 文件或 parquet 文件进行访问,但我可以将其加载到我的 PC 的 RAM 中。
在给定所需数量的每个样本的时间戳和所需的每批样本数量的情况下,数据应该被适当地塑造,以便成为 Keras LSTM 模型(Tensorflow 2)的输入.
这是我在这个主题上的第二篇文章。我已经得到了将数据转换为 tfrecord 格式的建议。
由于我的原始环境将是 PySpark,因此进行此转换的方式是:
myDataFrame.write.format("tfrecords").option("writeLocality", "local").save("/path")
How to convert multiple parquet files into TFrecord files using SPARK?
现在假设这已经完成并且为了简化事情并使它们具体和可重现让我们假设一个形状为 1000 行 x 3 列的数据框,其中前两列是特征,最后一列是目标,而每一行对应于一个时间戳。
例如,第一列是温度,第二列是风速,第三列(目标)是能量消耗。每行对应一个小时。该数据集包含 1,000 个连续小时的观察结果。我们假设任何给定时间的能量消耗是几个小时前大气状态的函数。因此,我们希望使用 lstm 模型来估计能耗。我们决定向 lstm 模型提供样本,每个样本都包含前 5 小时的数据(即每个样本 5 行)。为简单起见,假设目标已向后移动一小时,因此切片data[0:4, :-1] 具有目标data[3, -1]。假设为batch_size = 32。
数据以.tfrecords 格式保存在我们的硬盘中。我们无法将所有数据加载到我们的 RAM 中。
我们该怎么做?
【问题讨论】:
标签: python tensorflow keras lstm tfrecord