【问题标题】:Why does prediction needs batch size in Keras?为什么 Keras 中的预测需要批量大小?
【发布时间】:2016-10-21 01:09:05
【问题描述】:

在 Keras 中,为了预测数据测试的类别,使用了 predict_classes()

例如:

classes = model.predict_classes(X_test, batch_size=32)

我的问题是,我知道batch_size 在训练中的用法,但为什么它需要batch_size 来进行预测?它是如何工作的?

【问题讨论】:

    标签: neural-network classification keras


    【解决方案1】:

    原因是一样的,为什么你需要batch size来训练,因为你不能把所有数据都放在一个batch中

    同样地,如果你有数百万个数据点要预测,那显然你是无法一口气通过的(单批)。

    毕竟,训练和预测都对批处理数据进行前向传递。

    因此,您需要批量大小来控制/限制单个批次中的数据点并将其分布在多批次预测中。

    【讨论】:

      【解决方案2】:

      Keras 可以同时预测多个值,例如,如果您输入一个包含 100 个元素的向量,Keras 可以为每个元素计算一个预测值,给出 100 个输出。这种计算也可以分批完成,由 batch_size 定义。

      这是为了以防您无法同时将所有数据放入 CPU/GPU RAM 并且需要批处理。

      【讨论】:

      • 哦,我明白了,所以batch_size 是确定适合 CPU/GPU RAM 的数据大小,所以模型的准确性不应该取决于predict_classesbatch_size 值对吗?
      • @malioboro 这取决于。例如,如果您使用在预测期间不使用估计值的批量归一化(mode=1 这样做 IIRC),那么批量大小确实会对结果产生影响。
      • 对于那些想知道@nemo 的评论指的是什么的人,请参阅latest Keras 1 的文档。来自 Keras 2 发行说明:“BatchNormalization 的模式参数已被删除;BatchNorm 现在仅支持模式 0”
      • 如果我想对 10,000 张图像进行分类,通过所有图像进行预测并使用 batch_size=10,000 是否最快?优化大量图像的推理速度的最佳方法是什么?
      • 但是,预测的 tensorflow 文档说:“batch_size:整数或无。每次梯度更新的样本数。”所以他们确实谈论他们更新的梯度,这在预测中很奇怪......
      猜你喜欢
      • 2017-09-27
      • 2016-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      • 2019-02-14
      • 1970-01-01
      相关资源
      最近更新 更多