如果按顺序构建模型,是不是需要 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.Datasetdict 对象以及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?的主要内容,如果未能解决你的问题,请参考以下文章

TCP是不是保证按顺序到达?

OpenGL:深度缓冲向后工作,是不是按缠绕顺序?

熊猫数据框 - 按字符串过滤/选择列是不是保留顺序?

Visual Studio 2013 解决方案构建不按构建顺序

使用 liquibase 构建测试脚本以使用普通脚本按顺序执行

我是不是需要事务才能按顺序获得正确的最后插入 ID?