Lin*_* Gu 6 python bigdata pandas tensorflow tfrecord
首先,我想快速介绍一些背景知识。我最终想要实现的是在张量流框架下为一个多类分类问题训练一个完全连接的神经网络。
问题的挑战在于训练数据的规模巨大(约2 TB)。为了使训练在有限的内存下工作,我想将训练集保存到小文件中,并使用小批量梯度下降算法来训练模型。(每次只将一个或几个文件加载到内存中)。
现在说我已经有两个带有已处理数据的数据帧,一个带有X_train(700万个条目* 200个具有列名的特征),另一个带有training_y(700万个条目* 1个标签)。如何有效地将其保存到TFrecord文件中,保持列名,行索引等,并且我可能希望每个文件包含100,000个条目?我知道,有了TFrecord下的所有内容,我都可以利用在Tensorflow中实现的一些巧妙的改组和批处理功能。我可能需要一种非常有效的方式来写入此类记录,因为稍后需要将2TB的数据写入此文件格式。
我尝试在Google上搜索“如何将熊猫数据帧写入TFRecords”,但没有碰到好例子。大多数示例要求我创建一tf.train.Example列,一列,一行并使用写入tfrecord文件tf.python_io.TFRecordWriter。只想确认这是我能在这里得到的最好的。
如果您对我要解决的问题有其他建议,也将不胜感激!
您可以在此处查看将 pandas df 写入 tfRecord
安装 pandas-tfrecords
pip install pandas-tfrecords
Run Code Online (Sandbox Code Playgroud)
尝试
import pandas as pd
from pandas_tfrecords import pd2tf, tf2pd
df = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c'], 'C': [[1, 2], [3, 4], [5, 6]]})
# local
pd2tf(df, './tfrecords')
my_df = tf2pd('./tfrecords')
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。
可能有效的解决方法是将pandas数据帧导出到 parquet 文件。这是有效存储数据的最佳方法之一,因为数据将被分区到一些文件中。
您甚至可以决定将哪一列用于分区,以便该列的每个唯一值都将进入一个文件。更多信息请参阅_parquet pandas 文档。
然后您可以使用这些分区进行批处理。
| 归档时间: |
|
| 查看次数: |
822 次 |
| 最近记录: |