带有HDFS的Tensorflow数据集API

带有HDFS的Tensorflow数据集API,tensorflow,hdfs,tensorflow-datasets,Tensorflow,Hdfs,Tensorflow Datasets,我们已将*.tfrecord文件列表存储在HDFS目录中。我想使用新的Dataset API,但给出的唯一示例是使用旧的filequeue和string\u input\u producer()。这些方法使得生成纪元变得非常困难 有没有办法将HDFS与数据集API一起使用?HDFS文件系统层可与旧的基于队列的API和新的tf.dataAPI一起使用。假设您已根据配置了系统,则可以使用以下代码基于HDFS中的文件创建数据集: dataset = tf.data.TFRecordDataset(["

我们已将*.tfrecord文件列表存储在HDFS目录中。我想使用新的Dataset API,但给出的唯一示例是使用旧的filequeue和string\u input\u producer()。这些方法使得生成纪元变得非常困难


有没有办法将HDFS与数据集API一起使用?

HDFS文件系统层可与旧的基于队列的API和新的
tf.data
API一起使用。假设您已根据配置了系统,则可以使用以下代码基于HDFS中的文件创建数据集:

dataset = tf.data.TFRecordDataset(["hdfs://namenode:8020/path/to/file1.tfrecords",
                                   "hdfs://namenode:8020/path/to/file2.tfrecords"])
dataset = dataset.map(lambda record: tf.parse_single_example(record, ...)
# ...

请注意,由于HDFS是一个分布式文件系统,您可能会受益于《输入管道性能指南》一节中的一些建议。

在分布式tensorflow培训中,使用
tf.contrib.data.parallel_interleave
从HDFS加载数据,我是否需要手动将数据集拆分为不同的目录,以使每个工作读取整个数据集的不同部分?不同的目录是一种方法,但您也可以使用
dataset.list_files(…,shuffle=False)。shard(num_workers,worker_id)
以确保每个工作人员读取文件集的不同部分。您的链接已断开。