刚入门深度学习的时候,对TensorFlow项目里的checkpoint比较好奇(一般是后缀.pth的文件),于是上网搜寻了相关资料。
机器学习里面保存的模型checkpoint文件里面到底是什么东东? - 知乎
简单地说,在使用tensorflow跑模型的时候,我们不可能一次跑完,中间要保存一下的(就像写文章中间要保存下草稿)。因此checkpoint其实就是保存下来的中间模型。
保存了TensorFlow 模型之后,我们会得到如下图所示的4个文件:
checkpoint中包含了需要加载模型的目录,需要根据实际地址修改一下。
“.ckpt.meta”是一个protocol buffer,用于保存完整的Tensorflow图/完整的神经网络结构图; 即所有变量,操作,集合等。也就是你能在tensorboard/graph中看见的内容。但是不包含变量的值,也就是说TensorFlow是把图结构和变量值分开储存的。
“.ckpt.data”保存了所有的变量的值/已训练好的变量参数/网络权重值,但是不包含结构。
“ ckpt.index”描述了variable中key和value的对应关系。
如果要在python中恢复一个模型,我们只需要使用同时用到meta和data文件:
with tf.Session() as sess:
saver = tf.train.import_meta_graph('/tmp/model.ckpt.meta')
saver.restore(sess, "/tmp/model.ckpt")
在这里,我们需要先导入.meta文件,再导入.data文件,否则模型不知道如何把checkpoint里面的值对应到变量上。