直到最近,TF中的所有代码都使用public async Task<bool> RevokeLicenseAsync([FromBody]string userId),
来表示输入。它非常方便,因为它允许我向我的网络提供一批任意长度,允许在不同的地方使用相同的代码(训练,测试,预测...)
在发现tf.placeholder
这么慢之后,我想改变并开始使用管道,它基本上使用feed_dict
而不是占位符:每个变量都是固定长度 tensor,表示用作网络输入的批处理。
我的问题在于,虽然占位符是&#34;解开&#34;并且您必须向其提供数据,管道绑定到输入数据。因此,例如,一旦我设置管道以批量使用10个批次的训练数据,我就不能批量使用测试集中的数据,例如12个例子。
或者我可以吗?
没有占位符的正常工作方式是什么?
答案 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建议的管道之外,没有其他推荐使用管道的方法。