Machine learning keras.fit()重新初始化重量

Machine learning keras.fit()重新初始化重量,machine-learning,tensorflow,neural-network,deep-learning,keras,Machine Learning,Tensorflow,Neural Network,Deep Learning,Keras,我使用model.fit()训练了一个模型,并使用model.save()将其保存到物理文件中。现在,我有另一个数据集,我想用保存的模型恢复训练。但是,我发现每次fit()调用都被认为是一次全新的培训。这意味着,它将重新初始化之前生成并保存的权重 当我使用epochs 0调用fit()时,我没有看到重量重置问题。但是,我确实想尝试使用epochs>0 我在这里遗漏了什么,还是因为Keras的问题 Keras版本:2.0.3 谢谢。调用fit不应重新初始化权重 您写道您正在使用一个新的数据集-如果

我使用
model.fit()
训练了一个模型,并使用
model.save()
将其保存到物理文件中。现在,我有另一个数据集,我想用保存的模型恢复训练。但是,我发现每次
fit()
调用都被认为是一次全新的培训。这意味着,它将重新初始化之前生成并保存的权重

当我使用epochs 0调用
fit()
时,我没有看到重量重置问题。但是,我确实想尝试使用epochs>0

我在这里遗漏了什么,还是因为Keras的问题

Keras版本:2.0.3


谢谢。

调用fit不应重新初始化权重


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

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

  • 权重不会重置-您的模型将具有与调用
    fit
    之前完全相同的权重-当然,直到优化算法在第一批期间不会更改权重

  • 模型状态未重置-这是您可能遇到的情况。重置模型隐藏状态(尤其是在
    rnn
    情况下)。这是唯一改变的事情。如果您还想保留这些值(尤其是优化器状态在许多情况下是至关重要的),您可以使用
    train\u on\u batch
    方法,该方法根本不会影响模型的任何状态

  • 优化器状态不会重置-反复调用fit()不会重置优化器状态。参考:


  • 解决方法可能是使用批处理上的训练批处理上的训练是我最后的选择之一。我只是想知道这是否是fit()中的一个问题,或者其他什么问题。您应该尝试批量训练。如果可行,问题就解决了。如果没有,应该是您的数据集或其他东西,它会重新初始化权重。我想分享代码,但是,这有点复杂,因为我正在制作GAN。为什么您认为设置低学习率或设置trainable=False可以解决我的重新初始化问题?您可以看看代码,其中给出了几个重新训练模型的示例。如果这没有帮助,我建议您使用train_on_batch来训练几个示例,以确定权重是重新初始化还是快速拉向错误的方向。在后一种情况下,可以使用我关于学习率和可培训性的建议。