如果我使用 tf.data.Dataset 数据集中的多个元素来构建图表,然后稍后评估图表,则数据集中元素的顺序似乎是未定义的。例如,以下代码片段
import tensorflow as tf
dataset = tf.data.Dataset.range(5)
iterator = dataset.make_one_shot_iterator()
print 'build graph and then eval'
keep = []
for i in range(5):
keep.append(iterator.get_next())
with tf.Session() as sess:
keep_eval = sess.run(keep)
print keep_eval
print 'eval each element'
with tf.Session() as sess:
for i in range(5):
print sess.run(iterator.get_next()),
将产生如下输出:
构建图然后评估
[3 0 1 4 2]
评估每个元素
0 1 2 3 4
此外,每次运行都会产生不同的“构建图然后评估”。我希望“构建图然后评估”像“评估每个元素”一样被订购。谁能解释为什么会这样?