如果按顺序构建模型,是不是需要 tensorflow shuffle 和 batch?
Posted
技术标签:
【中文标题】如果按顺序构建模型,是不是需要 tensorflow shuffle 和 batch?【英文标题】:tensorflow shuffle and batch necessary if building the model sequentially?如果按顺序构建模型,是否需要 tensorflow shuffle 和 batch? 【发布时间】:2020-03-05 16:11:46 【问题描述】:我正在查看循环神经网络演练here。在教程中,他们有一个行项目:
dataset = dataset.shuffle(BUFFER_SIZE).batch(BATCH_SIZE, drop_remainder=True)
但是,如果您正在执行顺序构建,那还有必要吗?查看sequential 文档,自动执行随机播放?如果不是,为什么要在这里完成?有没有简单的数值例子说明效果?
【问题讨论】:
【参考方案1】:tf.keras.models.Sequential
还可以对数据进行批处理和打乱,类似于tf.data.Dataset
所做的。 Sequential 中提供了这些预处理功能,因为它可以处理多种类型的数据,例如 NumPy 数组、tf.data.Dataset
、dict
对象以及tf.keras.utils.Sequence
。
tf.data.Dataset
API 提供这些功能是因为该 API 与其他 TensorFlow API 一致(其中不涉及 Keras)。
我认为洗牌和批处理不需要进行两次。如果您愿意,您可以删除它,它不会影响模型的训练。我认为作者想使用tf.data.Dataset
将数据获取到 Keras 模型中。 dataset.shuffle( ... ).batch( ... )
已与Dataset
口语化。
【讨论】:
那么,为什么是 tf.data.Dataset 洗牌?为什么不总是让顺序模式来处理呢? 正如我所说,它们是口语化的。如果您使用数据集,您将主要观察 .shuffle 和 .batch 方法以上是关于如果按顺序构建模型,是不是需要 tensorflow shuffle 和 batch?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2013 解决方案构建不按构建顺序