Tensorflow 分区 csv input_fn
Tensorflow partitioned csv input_fn
总而言之,问题是我将要用于训练的数据分成许多较小的 csvs(feat-01.csv
、feat-02.csv
等)。我正在尝试将这些提供给 Estimator
,更准确地说是通过某种 input_fn
.
来做到这一点
我理想的解决方案是拥有某种输入函数,该函数采用 dask.Dataframe
(这几乎是我到目前为止生成数据的方式)并将其批量发送到估算器。我尝试了这些方法:
import tensorflow as tf
import dask.dataframe as dd
ddf = dd.read_csv('feat-*.csv')
tf.contrib.learn.extract_dask_data(ddf)
然而这失败了:
TypeError: Expected `meta` to specify type DataFrame, got type Index
由于缺乏直接使用 dask 的文档,我有点放弃了这个想法,尽管一些文档字符串似乎指出它应该是可能的。我正在考虑制作一个 input_fn
以直接从 csv 文件提供它,但我也没有找到关于这个用例的具体示例。
作为一个 TF 菜鸟,我想知道最干净的方法是什么。
更新: 在尝试通过 dask
无果而终地实现它之后,我放弃了这个想法,既因为沮丧,也因为开销可能有点多。
我使用 tf 的队列实现了一个输入函数,效果很好。这里是the code。虽然比我想的简单地将数据帧传递给估算器稍微复杂一些,但在 tensorflow 中完成所有工作似乎是最优雅的方法。
最终更新:
在我发布这个问题后不久,tensorlfow 1.4 发布了,数据集 API 得到了官方支持并得到了更好的记录。如果有人仍然对这个问题感兴趣,我建议你从 TF 文档中查看 this paragraph。
总而言之,问题是我将要用于训练的数据分成许多较小的 csvs(feat-01.csv
、feat-02.csv
等)。我正在尝试将这些提供给 Estimator
,更准确地说是通过某种 input_fn
.
我理想的解决方案是拥有某种输入函数,该函数采用 dask.Dataframe
(这几乎是我到目前为止生成数据的方式)并将其批量发送到估算器。我尝试了这些方法:
import tensorflow as tf
import dask.dataframe as dd
ddf = dd.read_csv('feat-*.csv')
tf.contrib.learn.extract_dask_data(ddf)
然而这失败了:
TypeError: Expected `meta` to specify type DataFrame, got type Index
由于缺乏直接使用 dask 的文档,我有点放弃了这个想法,尽管一些文档字符串似乎指出它应该是可能的。我正在考虑制作一个 input_fn
以直接从 csv 文件提供它,但我也没有找到关于这个用例的具体示例。
作为一个 TF 菜鸟,我想知道最干净的方法是什么。
更新: 在尝试通过 dask
无果而终地实现它之后,我放弃了这个想法,既因为沮丧,也因为开销可能有点多。
我使用 tf 的队列实现了一个输入函数,效果很好。这里是the code。虽然比我想的简单地将数据帧传递给估算器稍微复杂一些,但在 tensorflow 中完成所有工作似乎是最优雅的方法。
最终更新: 在我发布这个问题后不久,tensorlfow 1.4 发布了,数据集 API 得到了官方支持并得到了更好的记录。如果有人仍然对这个问题感兴趣,我建议你从 TF 文档中查看 this paragraph。