0

我的数据位于tf记录文件。这个简单的代码使用tf.数据。数据集应用程序编程接口。然而,每100个批次的计算时间会增加。为什么会这样?如何解决?

导入张量流作为tf导入时间sess=tf.Session()数据集=tf.data。TFRecordDataset(“/tmp/data/train.tfrecords”)dataset=数据集.repeat()dataset=数据集.batch(3)迭代器=数据集.make_one_shot_iterator()prev_step=时间.time()对于步进范围(10000):张量=迭代器.get_next()fetches=sess.run(张量)如果步骤%200==0:打印(“自上次%7.5f以来的步骤%6i时间”%(Step,time.time()-prev_Step))prev_step=时间.time()

这将输出以下时间:

自上次0.01432以来的步骤0时间步骤200自上次1.85303以来的时间自上次2.15448以来的步骤400时间自上次2.65473以来的步骤600时间步骤800自上次3.15646以来的时间自上次3.72434以来的步进1000次步骤1200自上次4.34447以来的时间自上次5.11210以来的步骤1400次自上次5.87102以来的步骤1600时间自上次6.61459以来的步骤1800次自上次7.57238以来的步骤2000时间自上次8.33060以来的步骤2200时间自上次9.37795以来的步骤2400时间

tfrecords文件包含用编写的MNIST图像这是Tensorflow文档中的HowTo

为了缩小问题范围,我复制了从磁盘读取原始图像的代码。在这种情况下,每200批的时间如预期一样保持不变。

现在我的问题是:

  • 代码的哪一部分增加了计算时间?
  • 我应该将此作为Tensorflow github中的一个bug归档吗?

解决了的!

回答我自己的问题:移动获取_文本()环路外

4
  • 包含其他信息将非常有用:TFRecord数据集的结构是什么,它有多大?你能用同样的测量方法从不同的格式读取相同的数据吗?
    – _网络4
    评论 2017年11月16日11:20
  • 2
    获取下一个返回一个操作。看起来应该在循环之外吗? 评论 2017年11月16日22:50
  • 感谢@E_net4的评论,我更新了问题 评论 2017年11月22日14:01
  • 问题解决了。的确获取_文本()应调用外部循环。不知道为什么我没有早点尝试。 评论 2017年11月27日10:49

1答案1

重置为默认值

已解决:移动获取_文本()环路外

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.