Tensorflow 数据集 API 与 HDFS

Tensorflow Dataset API with HDFS

我们在 HDFS 目录中存储了 *.tfrecord 文件列表。我想使用新的数据集 API,但给出的唯一示例是使用旧的文件队列和 string_input_producer (https://www.tensorflow.org/deploy/hadoop)。这些方法使得生成纪元等变得困难。

有什么方法可以将 HDFS 与数据集一起使用 API?

HDFS 文件系统层适用于旧的基于队列的 API 和新的 tf.data API。假设您已经按照TensorFlow/Hadoop deployment guide配置了您的系统,您可以使用以下代码创建基于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 是一个分布式文件系统,您可能会受益于输入管道性能指南 "Parallelize data extraction" 部分中的一些建议。