Keras model.save()和model.save_weights()之间的区别?

时间:2017-03-06 09:26:24

标签: machine-learning tensorflow neural-network keras

要在Keras中保存模型,输出文件之间有什么区别:

  1. model.save()
  2. model.save_weights()
  3. 回调中的
  4. ModelCheckpoint()
  5. model.save()中保存的文件大于model.save_weights()中的模型,但明显大于JSON或Yaml模型体系结构文件。为什么是这样?

    重申这一点:为什么size(model.save())+ size(某事物)= size(model.save_weights())+ size(model.to_json()),那是什么“某事”?

    仅仅model.save_weights()model.to_json()会更有效率,加载这些只是model.save()load_model()吗?

    有什么区别?

3 个答案:

答案 0 :(得分:12)

save()将权重和模型结构保存到单个HDF5文件中。我相信它还包括优化器状态之类的东西。然后,您可以将该HDF5文件与load()一起使用来重建整个模型,包括权重。

save_weights()仅将权重保存到HDF5,而不是其他任何内容。您需要额外的代码才能从JSON文件重建模型。

答案 1 :(得分:2)

只需添加ModelCheckPoint的输出(如果与其他人相关)即可:在模型训练期间用作回调,它可以保存整个模型,也可以仅保存权重,具体取决于save_weights_only参数设置的状态至。 TRUE和仅保留权重,类似于调用model.save_weights()。 FALSE(默认),并且保存整个模型,就像调用model.save()一样。

答案 2 :(得分:1)

  • model.save_weights()仅保存权重,因此如果需要,您可以将其应用于其他体系结构
  • mode.save()将保存模型的架构+权重+训练配置+优化器的状态