【问题标题】:TensorFlow 1.4 new Dataset API in Distributed ModeTensorFlow 1.4 分布式模式下的新数据集 API
【发布时间】:2017-11-24 18:13:25
【问题描述】:

在 TensorFlow 1.4 的新数据集 API 之前,我使用以下代码在不同工作人员之间创建文件名共享队列:

# queue with the file names that can be shared amongst workers during training
filename_queue = tf.FIFOQueue(100, tf.string, shared_name=shared_name)
enque_op = filename_queue.enqueue_many([tf.train.limit_epochs(file_names, num_epochs)])
close_op = filename_queue.close(cancel_pending_enqueues=True)

# create queue runner and add it to queue runners
qr = tf.train.QueueRunner(filename_queue, [enque_op], close_op,
                          queue_closed_exception_types=(tf.errors.OutOfRangeError, tf.errors.CancelledError))
tf.train.add_queue_runner(qr)

# read example from file
reader = tf.TFRecordReader()
_, example = reader.read(filename_queue)

# parse example
image, ground_truth, example_name = parse_example(example)

此代码使用队列和队列运行器,它非常丑陋且令人困惑。但它允许选项 shared_name= 在工作人员之间创建一个共享队列,这样他们就不会在相同的示例上工作。

在 TensorFlow 1.4 新版本发布后,input pipelines 变得更加易于使用。所以我想更新我的程序以使用这个新功能。 但是,我在新文档中找不到如何在工作人员之间共享数据集的任何地方。

这是自动完成还是不是一项功能?

【问题讨论】:

    标签: tensorflow tensorflow-datasets


    【解决方案1】:

    您可以为此目的使用tf.data.Dataset.shard(请参阅documentation)。该文档说明了如何“分片”单个文件的元素或(如在您的示例中)“分片”文件名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 2017-11-22
      • 2019-01-08
      • 2015-06-04
      • 2013-04-17
      • 1970-01-01
      相关资源
      最近更新 更多