如何为 Keras 打开一个大的 parquet 文件?

Posted

技术标签:

【中文标题】如何为 Keras 打开一个大的 parquet 文件?【英文标题】:How can I open a large parquet file for Keras? 【发布时间】:2021-06-09 18:16:20 【问题描述】:

我试过寻找这个,但没有任何有意义的结果。

我有一个具有多输入的keras 模型,我的数据对于我的 pandas 方法来说太大了,所以我对其进行了预处理并将其保存为镶木地板文件。我不知道如何用 keras 打开它。

我查了tf.datasets,但我仍然不知道如何读取可以传递给我的模型的镶木地板文件。

有人知道如何使用打开的拼花文件吗?我似乎无法弄清楚如何在 tensorflow 中执行此操作,并且在 keras 中找不到任何与之相关的内容。

【问题讨论】:

【参考方案1】:

您可能可以保留您的 pandas 方法,但您必须将数据分解成块。

如果您已经将其分解以创建 parquet 文件,您应该能够使用相同的方法一次只在 pandas 中打开一部分数据。

如果您需要从 parquet 文件中提取数据,请点击以下链接,了解如何为 pandas 数据框创建数据块: How to read a CSV file subset by subset with Pandas?

一旦你有了一大块数据,你就可以对那块数据调用 model.fit,然后继续下一个块并调用 model.fit

【讨论】:

【参考方案2】:

您可以查看 TensorFlow I/O,它是 TensorFlow 内置支持中不可用的文件系统和文件格式的集合。在这里您可以找到 tfio.IODataset.from_parquet 和 tfio.IOTensor.from_parquet 等功能来处理 parquet 文件格式。

!pip install tensorflow_io -U -q 
import tensorflow_io as tfio

df = pd.DataFrame("data": tf.random.normal([20], 0, 1, tf.float32),
                   "label": np.random.randint(2, size=(20)))
df.to_parquet("df.parquet") 
pd.read_parquet('/content/df.parquet')[:2]
    data    label
0   0.721347    1
1   -1.215225   1

ds = tfio.IODataset.from_parquet('/content/df.parquet')
ds

仅供参考,我认为您还应该考虑使用feather 格式而不是parquet 文件格式,AFAIK,parquet 文件可能非常难以加载并且会减慢您的训练管道,而@987654330 @ 比较快(非常快)。

【讨论】:

以上是关于如何为 Keras 打开一个大的 parquet 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 LSTM 实现 Keras 自定义损失函数

如何为 keras 中的 LSTM 回归准备输入数据?

如何为 Keras 计算 Pandas DataFrame 的类权重?

如何为 keras 模型使用 tensorflow 自定义损失?

如何为 keras 使用自定义损失函数

TensorFlow 2.0 Keras:如何为 TensorBoard 编写图像摘要