Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow tf.train.batch输出不确定_Tensorflow - Fatal编程技术网

Tensorflow tf.train.batch输出不确定

Tensorflow tf.train.batch输出不确定,tensorflow,Tensorflow,我正在使用Tensorflow学习MNIST数据。 对于批处理,我从单个图像创建一个批处理,如下所示: BatchedInputs = list(tf.train.batch( Inputs, batch_size=BatchSize, num_threads=self._PreprocessThreads, capacity=self._MinimumSamplesInQueue + 3 * BatchSize)) 当我创建(用于测试)大小为1的批并在TensorBoard中

我正在使用Tensorflow学习MNIST数据。 对于批处理,我从单个图像创建一个批处理,如下所示:

BatchedInputs = list(tf.train.batch(
  Inputs,
  batch_size=BatchSize,
  num_threads=self._PreprocessThreads,
  capacity=self._MinimumSamplesInQueue + 3 * BatchSize))
当我创建(用于测试)大小为1的批并在TensorBoard中查看这些图像时,我可以看到,并非每次运行时,每个图像都与其他运行中的图像相同。 它们不会被直接洗牌,但有时会包含另一个图像


我希望从该操作中获得确定性输出,但事实并非如此。也许我做错了什么事(开始排队出错或类似的事情)

如果在调用时设置
num_threads>1
,则生成的程序将是不确定的,因为这将创建三个不协调的预取线程,这些线程计算
输入
,并将下一个元素插入队列。由于预取线程是不协调的,因此这些线程之间存在将队列中的元素排队的竞争,这导致队列元素顺序的不确定性


设置
num_threads=1
应该使程序的这一部分具有确定性,假设程序的其他部分具有确定性。然而,这是一个很弱的保证,尤其是在基于队列的输入例程中使用洗牌会使程序变得不确定。

另一个注意:当我不批处理数据,而只是向我的网络提供列表
输入时,输入数据在所有运行中都是确定的。实际上,我使用8线程进行预取。将数字减少到1将解决此问题!谢谢你清楚的解释。