我使用model.fit()
训练模型并使用model.save()
将其保存在物理文件中。现在,我有另一个数据集,我想继续使用保存的模型进行训练。但是,我发现每次fit()
电话被认为是一种新的训练。这意味着,它重新初始化之前生成和保存的权重。
当我用纪元0调用fit()
时,我没有看到重量重置问题。但是,我绝对想尝试使用时代> 0
我在这里遗漏了什么,或者这是Keras的问题。
Keras版本:2.0.3
感谢。
答案 0 :(得分:5)
实际上 - 调用fit
的情况如下:
权重未重置 - 您的模型将具有与调用fit
之前完全相同的权重 - 当然直到优化算法在第一批中不会更改它们
模型状态未重置 - 这可能是您遇到的情况。模型隐藏状态(特别是在rnn
情况下)被重置。这是唯一改变的事情。如果你想保留这些值(特别是优化器状态在许多情况下是至关重要的) - 你可以使用train_on_batch
方法,它根本不会影响任何模型状态。
优化程序状态未重置 - 再次调用fit()不会重置优化程序状态。参考:https://github.com/keras-team/keras/issues/454#issuecomment-125644222
答案 1 :(得分:0)
调用拟合不应重新初始化权重。
您写道您正在使用新数据集 - 如果此数据集具有不同的统计信息,则很容易导致网络快速失去准确性。如果是这种情况,尝试一个非常小的学习率或在前几个时期的早期层设置trainable = False。