shuffle 就是为了避免数据投入的顺序对网络训练造成影响。
增加随机性,提高网络的泛化性能,避免因为有规律的数据出现,导致权重更新时的梯度过于极端,避免最终模型过拟合或欠拟合。
因为按照某些顺序投入容易在训练中走偏或陷入局部最优使得训练效果出现差异,尤其是当 batch size 比较小的时候。
关于 data.shuffle(buffer_size) 的学习