如何重新训练/更新 keras 模型?

Posted

技术标签:

【中文标题】如何重新训练/更新 keras 模型?【英文标题】:How to retrain/update keras model? 【发布时间】:2019-06-18 20:28:54 【问题描述】:

如何在不从头开始重新训练的情况下更新/附加新数据到我的模型? 我的数据集是图像,输出是预测情绪。

model.fit(x=train_image, y=train_label, epochs=1, batch_size=1)

Model.fit 似乎没有附加我的新数据,而是覆盖了模型。我的输出只有一个(我更新的最后一个)。

Loading a trained Keras model and continue training

我已经搜索过了,但效果不佳。

编辑 1: 当我们丢失之前训练的数据时,我们能做什么。简而言之,我们在训练完成后丢失了训练数据,并且无法再次取回数据,我们需要保留的只是从中完成的学习,并在收到新数据时重新训练模型。

【问题讨论】:

究竟是什么不起作用?您收到任何错误消息吗?您是否还将优化器的状态保存在某处? @Hagbard 是的,我确实保存了它,它没有错误。问题是每次我使用 model.fit 重新训练/更新它时,它都会不断覆盖我的模型。 【参考方案1】:

这真的很容易。例如 Keras 中的model.save() 可以保存模型权重,这是您实际需要保留的。

之后,您可以将新图像添加到您的训练集中,但只需使用您保存的权重即可。

每个新纪元都会通过所有图像(新旧图像)。

【讨论】:

好吧,我将训练数据的 x 和 y 数组保存到 numpy 文件中。然后将新的 x 和 y 数据附加到该文件中,然后重新训练整个模型。它更像是一种数据收集方法。 你有任何教程/资源的链接来解释模型再训练的实际效果吗? @JapeshMethuku 不,因为我在 PyTorch 中的时间越来越长,但你可以试试 keras.io/guides /transfer_learning/ @prosti 谢谢!但是当我说再培训时,我并没有提到迁移学习。 有什么大的不同吗?

以上是关于如何重新训练/更新 keras 模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用现有的和更新的类微调 keras 模型?

如何使用 tensorflow 或 keras 重新训练具有新子集的线性回归模型?

是否可以重新训练以前保存的 keras 模型?

如何在新数据上更新时间序列模型(例如 facebook_prophet),而无需每次都重新训练数据? [关闭]

Tensorflow,Keras:如何创建仅在特定位置更新的可训练变量?

如何减小 keras 保存模型的大小?