dataset.batch函数和model.fit函数的batch_size参数有什么区别?

时间:2020-07-02 13:19:35

标签: tensorflow machine-learning keras artificial-intelligence

在模型功能dataset.batch(batch_size)上用batch_size批处理数据集和用.fit参数批处理数据集有什么区别?它们具有相同的功能还是不同?

2 个答案:

答案 0 :(得分:1)

在文档中查看fit中的参数batch_size

batch_size
整数或None。每个梯度更新的样本数。如果未指定,batch_size将默认为32。如果您的数据是以数据集,生成器或keras.utils.Sequence实例的形式(因为它们生成批次),则不要指定batch_size

因此,如果要传递数据集对象进行训练,请不要使用batch_size参数,因为这仅适用于X / Y值为NumPy数组或TensorFlow张量的情况。

答案 1 :(得分:0)

使用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])]

这将修改您的数据集对象本身。在许多情况下,这可能是不希望的。我建议仅将此功能用于数据集的处理,作为预处理的一个步骤。

此外,将数据集对象与在batch_size中指定fit参数相结合将引发错误。

当将numpy数组或张量流张量作为输入传递到batch_size时,应使用fit参数。

示例来自官方tensorflow文档,可在下面的链接中找到

dataset.batch()-https://www.tensorflow.org/api_docs/python/tf/data/Dataset#batch