【问题标题】:Working without TensorFlow placeholder在没有 TensorFlow 占位符的情况下工作
【发布时间】:2017-07-26 05:05:41
【问题描述】:

直到最近,我在 TF 中的所有代码都使用tf.placeholder 来表示输入。这非常方便,因为它允许我向我的网络提供一批任意长度的数据,允许在不同的地方使用相同的代码(训练、测试、预测......)

在发现feed_dict这么慢后,我想改变并开始使用管道,它基本上使用tf.Variables而不是占位符:每个变量都是一个固定长度张量,并且表示用作网络输入的批次。

我的问题是,虽然占位符“解绑”并且您必须向其提供数据,但管道绑定到输入数据。因此,例如,一旦我将管道设置为批量使用大小为 10 的训练数据,我就无法批量使用测试集中的数据,例如 12 个示例。

或者我可以吗?

没有占位符的正确工作方式是什么?

【问题讨论】:

  • 只是好奇您使用的是图像数据还是文本?
  • 很抱歉没有早点回答:实际上,两者都没有。我正在处理物理信号数据。

标签: python tensorflow


【解决方案1】:

cifar10 示例不使用占位符。它使用 tf.FixedLengthRecordReader 和 tf.train.shuffle_batch。生成的输入图像批次直接传递给 CNN,无需占位符。

请参考tensorflow的官方教程,是python代码:

https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_train.py

另外,在测试时,您可以将测试数据的管道与训练数据中的不同批次数链接起来。

请参考评估码: https://github.com/tensorflow/models/blob/master/tutorials/image/cifar10/cifar10_eval.py

【讨论】:

    【解决方案2】:

    除了固定大小的变量之外,我找不到任何其他没有占位符的工作方法。

    显然,除了官方文档reading data 建议的方法之外,没有其他推荐的管道使用方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      相关资源
      最近更新 更多