2017-04-05 78 views
1

直到最近,我所有在TF中的代码都使用tf.placeholder来表示输入。这是非常方便的,因为它允许我喂养一批任意长度的网络,允许在不同的地方使用相同的代码(训练,测试,预测......)无TensorFlow占位符的工作

当发现feed_dict是如此慢,我想改变并开始使用管道,它基本上使用tf.Variable而不是占位符:每个变量是一个固定长度张量,并且表示一个用作网络输入的批处理。

我的问题是,虽然占位符是“解开”,你必须提供数据,管道绑定到输入数据。因此,例如,一旦我将管道设置为使用10号批处理的训练数据,我就不能使用12个例子中批处理的测试集中的数据。

或者我能吗?

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

+0

如果您正在使用的图像数据或文字工作只是好奇? – Aaron

+0

对不起,以前没有回答:实际上,也没有。我正在处理物理信号数据。 – AkiRoss

回答

0

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

显然,没有其他建议的方式使用管道,而不是官方文档reading data建议的方式。

0

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