是否再次调用 model.fit 方法重新初始化已经训练的权重?

Posted

技术标签:

【中文标题】是否再次调用 model.fit 方法重新初始化已经训练的权重?【英文标题】:Does calling the model.fit method again reinitialize the already trained weights? 【发布时间】:2018-07-13 22:41:14 【问题描述】:

我正在使用 Keras 来训练网络。假设在 20 个 epoch 之后我想停止训练以检查一切是否正常,然后从第 21 个 epoch 继续。第二次调用model.fit 方法是否会重新初始化已经训练好的权重?

【问题讨论】:

【参考方案1】:

第二次调用 model.fit 方法是否会重新初始化已经训练好的权重?

不,它将使用您的模型已有的权重并对其执行更新。这意味着您可以根据需要进行连续调用以适应并正确管理它。

这也是正确的,因为在 Keras 中,您还可以保存模型(使用 save and load_model 方法),将其加载回来,然后在其上调用 fit。有关该检查的更多信息this 问题。

您的另一个选择是改用train_on_batch method:

train_on_batch(self, x, y, sample_weight=None, class_weight=None)

对一批数据运行一次梯度更新。

这样我认为你可以在模型的更新之间有更多的控制,你可以检查训练是否一切正常,然后继续下一次梯度更新。

【讨论】:

以上是关于是否再次调用 model.fit 方法重新初始化已经训练的权重?的主要内容,如果未能解决你的问题,请参考以下文章

Python Tensorflow - 多次运行 model.fit 而不重新实例化模型

保存不同时期的 model.fit 历史

如何重构/重新格式化包含要输入到 Tensorflow 的 model.fit() 中的图像的 Pandas 数据帧?

Keras - 管理历史

Pygame重启?

Model.fit()是否将整个训练数据集上传到GPU?