model.fit和model.predict中的批量大小

时间:2018-03-14 21:52:07

标签: tensorflow deep-learning keras

keras中,model.fitmodel.predict的参数均为batch_size。我的理解是,model.fit中的批量大小与批量优化有关,batch_sizemodel_predict的物理意义是什么?它是否需要等于model.fit使用的那个?

3 个答案:

答案 0 :(得分:3)

不,不。想象一下,在你的模型中有一个功能可以显着增加内存量。因此,如果您尝试一次性预测所有数据,则可能会遇到资源错误。当您使用具有有限gpu内存的gpu进行预测时,通常会出现这种情况。因此,您选择仅同时预测小批量。预测函数中的batch_size参数不会以任何方式改变您的结果。因此,您可以选择任何您想要进行预测的batch_size。

答案 1 :(得分:0)

这取决于您的模型以及训练时的批次大小是否必须与预测时的批次大小匹配。例如,如果您使用的是有状态LSTM,则批处理大小很重要,因为整个数据序列分布在多个批处理中,也就是说,这是一个超越批处理的长序列。在这种情况下,用于预测的批次大小应与训练时的批次大小匹配,因为匹配它们对于定义序列的整个长度很重要。在无状态LSTM或常规前馈感知器模型中,批次大小不需要匹配,并且实际上不需要为predict()指定它。

只需添加;这与train_on_batch()不同,在predict()中,您可以提供一批输入样本并获得相同数量的预测输出。因此,如果创建一批100个样本,则将其提交给train_on_batch(),您将获得100个预测,即每个样本一个。与一次向zip发出一个相比,这可以带来性能上的好处。

答案 2 :(得分:0)

如上所述,批次大小只会增加一次(批)输入的训练数据的数量。假设您是在个人计算机上运行它,则增加它可能会增加计算机资源耗尽的机会。如果您在具有更高资源的云上运行它,那应该没问题。您可以根据需要切换数字,但不要输入太大的数字,我建议缓慢上升。另外,在增加批量大小之前,您可能需要阅读以下内容:

https://stats.stackexchange.com/questions/164876/tradeoff-batch-size-vs-number-of-iterations-to-train-a-neural-network