在Keras中多次调用“ fit”
conv-neural-network
keras
machine-learning
neural-network
4
0

我正在为CNN制作超过数百GB的图像。我创建了一个训练功能,该功能可以消除这些图像的4Gb块,并且调用fit这些片段中的每一个。我担心我只训练最后一块而不是整个数据集。

实际上,我的伪代码如下所示:

DS = lazy_load_400GB_Dataset()
for section in DS:
    X_train = section.images
    Y_train = section.classes

    model.fit(X_train, Y_train, batch_size=16, nb_epoch=30)

我知道API和Keras论坛都说这将对整个数据集进行训练,但是我无法直观地理解为什么网络不会仅对最后一个训练块进行重新学习。

一些帮助理解这一点将不胜感激。

最好,乔

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

问题#4446: Keras github存储库中提出了这个问题:快速提问:模型可以多次拟合吗? FrançoisChollet用以下陈述将其关闭:

是的,连续调用fit将逐步训练模型。

因此,是的,您可以多次调用fit。

收藏
评论

对于不适合内存的数据集, Keras Documentation FAQ部分提供了一个答案。

你可以用做批量训练model.train_on_batch(X, y)model.test_on_batch(X, y)请参阅模型文档

另外,您可以编写一个生成一批训练数据的生成器,并使用model.fit_generator(data_generator, samples_per_epoch, nb_epoch)

您可以在我们的CIFAR10示例中看到批量培训的实际应用

因此,如果您想按自己的方式迭代数据集,则可能应该使用model.train_on_batch并自己照顾批处理大小和迭代。

还有一点要注意的是,您应该确保在每个时期之后,将训练模型所用的样本的顺序打乱。您编写示例代码的方式似乎并没有改组数据集。您可以在此处此处了解更多有关改组的信息

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

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号