我正在使用Tensorflow来学习MNIST数据.对于批处理,我从单个图像创建一个批处理,如下所示:
BatchedInputs = list(tf.train.batch(
Inputs,
batch_size=BatchSize,
num_threads=self._PreprocessThreads,
capacity=self._MinimumSamplesInQueue + 3 * BatchSize))
Run Code Online (Sandbox Code Playgroud)
当我创建(用于测试)批量为1的批次并在TensorBoard中查看这些图像时,我可以看到,并非每次运行时,每个图像都与其他运行中的图像相同.它们不会直接洗牌,但有时会包含其他图像.
我希望从该操作获得确定性输出,但事实并非如此.也许我做错了什么(开始排队错误或类似的东西)?
如果num_threads > 1在调用时设置tf.train.batch(),则生成的程序将是非确定性的,因为这将创建三个未协调的预取线程,用于评估Input并将下一个元素插入队列.由于预取线程是不协调的,因此在这些线程之间存在争用以使队列中的元素入队,并且这导致队列元素的顺序的非确定性.
num_threads = 1假设程序的其他部分是确定性的,那么设置应该使程序的这一部分具有确定性.然而,这是一个弱保证,特别是在基于队列的输入例程中使用混洗将使程序不确定.
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |