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

mik*_*305 28 machine-learning neural-network keras tensorflow

要在Keras中保存模型,输出文件之间的区别是:

  1. model.save()
  2. model.save_weights()
  3. ModelCheckpoint() 在回调中

保存的文件model.save()大于模型model.save_weights(),但比JSON或Yaml模型体系结构文件大得多.为什么是这样?

重申一下:为什么size(model.save())+ size(something)= size(model.save_weights())+ size(model.to_json()),那是什么"东西"?

公正model.save_weights()model.to_json()加载是否会更有效率而不仅仅是做model.save()load_model()

有什么区别?

Mat*_*gro 20

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

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

  • @payne 优化器有状态,比如梯度的运行方式,所以如果你从头开始,学习可能会不稳定甚至失败。 (2认同)
  • @MatiasValdenegro 所以使用`model.save_weights('my_model_weights.h5')` 会干扰学习过程,应该使用`model.save('my_model.h5')` 以便在中断的地方继续训练? (2认同)

小智 6

  • model.save_weights() 只会保存权重,因此如果您需要,您可以将它们应用于不同的架构
  • mode.save() 将保存模型的架构 + 权重 + 训练配置 + 优化器的状态