【发布时间】:2018-11-06 22:54:22
【问题描述】:
在keras 中,model.fit 和model.predict 都有一个参数batch_size。我的理解是model.fit中的batch size与batch优化有关,model_predict中batch_size的物理意义是什么?需要和model.fit使用的一样吗?
【问题讨论】:
标签: tensorflow deep-learning keras
在keras 中,model.fit 和model.predict 都有一个参数batch_size。我的理解是model.fit中的batch size与batch优化有关,model_predict中batch_size的物理意义是什么?需要和model.fit使用的一样吗?
【问题讨论】:
标签: tensorflow deep-learning keras
不,它没有。想象一下,在您的模型内部有一个函数可以显着增加内存量。因此,如果您尝试一次性预测所有数据,您可能会遇到资源错误。当您使用具有有限 gpu 内存的 gpu 进行预测时,通常会出现这种情况。因此,您选择同时仅预测小批量。 predict 函数中的 batch_size 参数不会以任何方式改变您的结果。所以你可以选择任何你想要的batch_size进行预测。
【讨论】:
这取决于您的模型以及训练时的批大小是否必须与预测时的批大小相匹配。例如,如果您使用的是有状态 LSTM,那么批次大小很重要,因为整个数据序列分布在多个批次中,即它是一个超越批次的长序列。在这种情况下,用于预测的批量大小应该与训练时的批量大小相匹配,因为它们匹配对于定义序列的整个长度很重要。在无状态 LSTM 或常规前馈感知器模型中,批量大小不需要匹配,您实际上不需要为 predict() 指定它。
只是添加;这与train_on_batch() 不同,您可以提供一批输入样本并获得相同数量的预测输出。因此,如果您创建一批 100 个样本,然后提交到 train_on_batch(),那么您将获得 100 个预测,即每个样本一个。与一次向predict() 发布一个相比,这可以带来性能优势。
【讨论】:
如上所述,批次大小只会增加一次性输入的训练数据的数量(批次)。假设您在个人计算机上运行它,增加它可能会增加您的计算机资源耗尽的机会。如果您在具有更高资源的云上运行它,您应该没问题。你可以随意切换数字,但不要输入很大的数字,我建议慢慢增加。此外,您可能需要在增加批量大小之前阅读此内容:
【讨论】: