keras中的train_on_batch()有什么用?
deep-learning
keras
machine-learning
7
0

train_on_batch()fit()有何不同?在什么情况下应使用train_on_batch()

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

对于这个问题,这是主要作者的一个简单答案

使用fit_generator ,您还可以将生成器用于验证数据。通常,我建议使用fit_generator ,但使用train_on_batch也可以。这些方法只是为了方便起见而存在于不同的用例中,没有“正确”的方法。

train_on_batch允许您根据所提供的样本集合明确更新权重,而无需考虑任何固定的批次大小。您可以在需要的情况下使用它:训练明确的样本集合。您可以使用该方法在多个传统训练集的批次上维护自己的迭代,但是允许fitfit_generator为您迭代批次可能更简单。

最好使用train_on_batch一种情况是在一批新的样本上更新预先训练的模型。假设您已经训练和部署了一个模型,并且稍后某个时候您收到了一组以前从未使用过的新训练样本。您可以使用train_on_batch仅在这些样本上直接更新现有模型。其他方法也可以做到这一点,但是在这种情况下,使用train_on_batch是相当明确的。

除了像这样的特殊情况(在某些教学原因上,您需要在不同的培训批次之间保持自己的光标,或者在特殊批次上进行某种类型的半在线培训更新)之外,最好始终使用fit (适用于内存中的数据)或fit_generator (适用于将成批的数据作为生成器进行流式处理)。

收藏
评论

train_on_batch()使您可以更好地控制LSTM的状态,例如,在使用有状态LSTM并控制对model.reset_states()调用时。您可能具有多系列数据,并且需要在每个系列之后重置状态,这可以使用train_on_batch() ,但是如果使用.fit()则网络将接受所有系列数据的训练,而无需重置状态。没有对与错,这取决于您所使用的数据以及网络的运行方式。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号