TensorFlow 2.x中shuffle函数和batch函数调用顺序影响
探究TensorFlow 2.x版本中,shuffle函数和batch函数调用顺序对训练过程中随机取样结果的影响。
先shuffle,再batch
代码如下:
import tensorflow as tf
x_train = tf.range(0, 10)
y_train = tf.range(5, 15)
dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset.shuffle(10)
dataset = dataset.batch(5)
for epoch in range(10):
for step, (x, y) in enumerate(dataset):
print(f"step:{step}, x:{x.numpy()}, y:{y.numpy()}, y-x:{y.numpy()-x.numpy()}")
print()
输出结果如下:

先batch,再shuffle
代码如下:
import tensorflow as tf
x_train = tf.range(0, 10)
y_train = tf.range(5, 15)
dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset.batch(5)
dataset = dataset.shuffle(10)
for epoch in range(10):
for step, (x, y) in enumerate(dataset):
print(f"step:{step}, x:{x.numpy()}, y:{y.numpy()}, y-x:{y.numpy()-x.numpy()}")
print()
输出结果如下:

结论
-
先shuffle,再batch,则shuffle过程是以样本为单位打乱的;
-
先batch,再shuffle,则shuffle过程是以batch为单位打乱的;
-
shuffle过程,样本和标签的对应关系不受影响(这当然是必须的了);
其它
关于shuffle函数中buffer_size参数的作用,这篇博客讲的很清楚,受教了。
探讨TensorFlow2.x中shuffle与batch函数调用顺序对训练集随机取样的影响。先shuffle后batch按样本打乱;先batch后shuffle则按批次打乱。shuffle不影响样本标签对应。
6万+

被折叠的 条评论
为什么被折叠?



