【问题标题】:What is the difference between the `dataset.batch` function and the `batch_size` parameter of the `model.fit` function?`dataset.batch` 函数和 `model.fit` 函数的 `batch_size` 参数有什么区别?
【发布时间】:2020-10-23 02:37:48
【问题描述】:

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

【问题讨论】:

标签: tensorflow machine-learning keras artificial-intelligence


【解决方案1】:

查看fit中参数batch_size的文档:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多