shuffle是一种通常有用的方法,如果你想要随机播放你的数据并且你之前没有选择能够这样做,比如当你从生成器中读取时。如果您想在每次迭代时对数据进行混洗,那么shuffle方法也非常有用(通常与数据结合使用)
重复
方法)。这是一个快速示例,说明原因:
dataset1 = tf.data.Dataset.range(5).shuffle(5).repeat(3).make_one_shot_iterator().get_next()
dataset2 = tf.data.Dataset.range(5).shuffle(5, reshuffle_each_iteration=False).repeat(3).make_one_shot_iterator().get_next()
sess = tf.Session()
for i in range(15):
d1, d2 = sess.run([dataset1, dataset2])
print(“Dataset1: {}, Dataset2:, {}”.format(d1, d2))
</code>
结果:
Dataset1: 0, Dataset2:, 3
Dataset1: 3, Dataset2:, 0
Dataset1: 4, Dataset2:, 1
Dataset1: 1, Dataset2:, 2
Dataset1: 2, Dataset2:, 4
Dataset1: 1, Dataset2:, 3
Dataset1: 2, Dataset2:, 0
Dataset1: 3, Dataset2:, 1
Dataset1: 4, Dataset2:, 2
Dataset1: 0, Dataset2:, 4
Dataset1: 3, Dataset2:, 3
Dataset1: 0, Dataset2:, 0
Dataset1: 4, Dataset2:, 1
Dataset1: 1, Dataset2:, 2
Dataset1: 2, Dataset2:, 4
</code>
如您所见,第二个数据集重复了它一次洗牌的元素,而第一个数据集每次迭代数据集时都会对数据进行混洗。