keras.fit()重新初始化权重

时间:2017-04-17 16:46:33

标签: machine-learning tensorflow neural-network deep-learning keras

我使用model.fit()训练模型并使用model.save()将其保存在物理文件中。现在,我有另一个数据集,我想继续使用保存的模型进行训练。但是,我发现每次fit()电话被认为是一种新的训练。这意味着,它重新初始化之前生成和保存的权重。

当我用纪元0调用fit()时,我没有看到重量重置问题。但是,我绝对想尝试使用时代> 0

我在这里遗漏了什么,或者这是Keras的问题。

Keras版本:2.0.3

感谢。

2 个答案:

答案 0 :(得分:5)

实际上 - 调用fit的情况如下:

  1. 权重未重置 - 您的模型将具有与调用fit之前完全相同的权重 - 当然直到优化算法在第一批中不会更改它们

  2. 模型状态未重置 - 这可能是您遇到的情况。模型隐藏状态(特别是在rnn情况下)被重置。这是唯一改变的事情。如果你想保留这些值(特别是优化器状态在许多情况下是至关重要的) - 你可以使用train_on_batch方法,它根本不会影响任何模型状态。

  3. 优化程序状态未重置 - 再次调用fit()不会重置优化程序状态。参考:https://github.com/keras-team/keras/issues/454#issuecomment-125644222

答案 1 :(得分:0)

调用拟合不应重新初始化权重。

您写道您正在使用新数据集 - 如果此数据集具有不同的统计信息,则很容易导致网络快速失去准确性。如果是这种情况,尝试一个非常小的学习率或在前几个时期的早期层设置trainable = False。