在没有TensorFlow占位符的情况下工作

时间:2017-04-05 11:24:38

标签: python tensorflow

直到最近,TF中的所有代码都使用public async Task<bool> RevokeLicenseAsync([FromBody]string userId), 来表示输入。它非常方便,因为它允许我向我的网络提供一批任意长度,允许在不同的地方使用相同的代码(训练,测试,预测...)

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

我的问题在于,虽然占位符是&#34;解开&#34;并且您必须向其提供数据,管道绑定到输入数据。因此,例如,一旦我设置管道以批量使用10个批次的训练数据,我就不能批量使用测试集中的数据,例如12个例子。

或者我可以吗?

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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