在训练模型时,我使用tensorflow.keras.callbacks.ModelCheckpoint()
作为唯一的回调。我注意到,“冻结”图形时,它会释放其大小的很大一部分。问题是,此检查点中还存储了什么有用的东西,我该如何访问它?我对历史最感兴趣。
我没有使用tensorboard,因为当我尝试在我的Colab笔记本中实现它时,效果还不够好。
答案 0 :(得分:1)
检查点用于在训练期间进行存储,而冻结图用于进行推断。
存储检查点时,将不存储图形。它们将变量的值存储在图形中而不是整个图形中,这就是为什么如果不重新编译模型就无法继续训练。仅仅是ckpt文件还不够。
在存储模型以进行推理时,它不仅保存图形,而且还删除了在推理过程中不受益的所有节点。有些节点仅在训练期间需要,而在推理期间则不需要,例如,辍学。由于ckpt将这些训练变量与其余权重一起存储,因此ckpt的大小可能更大。保存的模型会删除这些变量,因此有时尺寸较小。
这可以通过引用以下内容的TensorFlow文档进行确认:
检查点捕获模型使用的所有参数(tf.Variable对象)的确切值。检查点不包含对模型定义的计算的任何描述,因此通常仅在将使用保存的参数值的源代码可用时才有用。
另一方面,SavedModel格式除了参数值(检查点)之外,还包括由模型定义的计算的序列化描述。这种格式的模型独立于创建模型的源代码。因此,它们适合通过TensorFlow Serving,TensorFlow Lite,TensorFlow.js或其他编程语言(C,C ++,Java,Go,Rust,C#等TensorFlow API)的程序进行部署。