Tensorflow解释了模型可以保存为三种文件格式:.ckpt或.hdf5或.pb。有很多文档,因此最好能够对何时使用哪种文件格式进行更简单的比较。
以下是我目前的理解:
.ckpt
来自https://www.tensorflow.org/guide/checkpoint:
检查点(Checkpoints)捕获模型使用的所有参数(tf.Variable对象)的确切值。检查点不包含定义模型的计算的任何描述,因此仅在可用源代码将使用保存的参数值时才有用。
因此,在训练期间进行checkpointing时,如果您知道您的源代码将保持不变,那么似乎应该使用cpkt。但是为什么推荐它而不是.pb和.hdf5呢?它是否节省空间?它是否包括其他文件格式不包含的数据?
.pb
同样来自https://www.tensorflow.org/guide/checkpoint:
另一方面,SavedModel格式除了模型定义的计算的序列化描述之外,还包括模型的权重和图结构。SavedModel是用于推理的标准格式。
这似乎是在推理期间使用的标准格式,因为它包含模型的权重和图形结构。
.hdf5
来自https://www.tensorflow.org/guide/keras/save_and_load#hdf5_format:
在Keras中,我们建议使用HDF5格式保存大型模型。这是一个二进制格式,允许您快速读取/写入数据。对于大多数模型而言,HDF5格式将是最合适的选择。
因此,如果您有一个大型模型,可以考虑使用.hdf5格式。
参数值(检查点)。以此格式保存的模型与创建该模型的源代码无关。因此,它们适合通过TensorFlow Serving、TensorFlow Lite、TensorFlow.js或其他编程语言(如C、C ++、Java、Go、Rust、C#等TensorFlow API)进行部署。SavedModel格式为.pb加上一些元数据。因此,在部署模型时应保存为.pb格式?
hdf5
仅在保存模型权重(数字矩阵)时使用?
.h5
格式会导致检查点的大小比.ckpt
小。 - Grwlf.h5
时,这取决于你要保存什么,但主要用于保存整个模型,因为HD5F是一种压缩文件。但是在使用Tensorflow时,您可能需要执行额外的步骤来使用数据,因为.ckpt
和.pb
文件类型是完全支持Tensorflow的。 - TF_Support