【发布时间】:2020-10-23 02:37:48
【问题描述】:
使用dataset.batch(batch_size) 批处理数据集与使用模型函数.fit 上的batch_size 参数批处理数据集有什么区别?它们具有相同的功能还是不同?
【问题讨论】:
标签: tensorflow machine-learning keras artificial-intelligence
使用dataset.batch(batch_size) 批处理数据集与使用模型函数.fit 上的batch_size 参数批处理数据集有什么区别?它们具有相同的功能还是不同?
【问题讨论】:
标签: tensorflow machine-learning keras artificial-intelligence
查看fit中参数batch_size的文档:
batch_size
整数或None。每次梯度更新的样本数。如果未指定,batch_size将默认为 32。如果您的数据是数据集、生成器或keras.utils.Sequence实例的形式(因为它们会生成批次),请不要指定batch_size。
因此,如果您要传递数据集对象进行训练,请不要使用 batch_size 参数,因为这仅适用于您的 X/Y 值是 NumPy 数组或 TensorFlow 张量的情况。
【讨论】:
使用dataset.batch() 将数据集对象的连续元素组合成批次。例如:
>> dataset = tf.data.Dataset.range(8)
>> dataset = dataset.batch(3)
>> list(dataset.as_numpy_iterator())
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7])]
这会修改您的数据集对象本身。在许多情况下,这可能是不可取的。我建议将此函数仅用于处理数据集,作为预处理的一个步骤。
此外,将数据集对象与在fit 中指定batch_size 参数组合将引发错误。
当 numpy 数组或 tensorflow 张量作为输入传递给 fit 时,应使用 batch_size 参数。
示例取自官方 tensorflow 文档,可在下面提供的链接中找到。
dataset.batch() - https://www.tensorflow.org/api_docs/python/tf/data/Dataset#batch
【讨论】: