如何为 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 Keras 计算 Pandas DataFrame 的类权重?