我使用saver=tf.train.Saver()
来保存我训练过的模型,我得到了三种名为的文件:
一个名为:
的文件.ckpt 文件的连接是什么?
我看到有人用.ckpt文件保存模型,我不知道怎么做。 如何将模型保存为.pb文件?
答案 0 :(得分:30)
.ckpt文件是saver.save(sess)
的旧版本输出,相当于您的.ckpt-data
(见下文)
“checkpoint”文件仅用于告知某些TF函数,这是最新的检查点文件。
.ckpt-meta
包含元图,即计算图的结构,没有变量的值(基本上你可以在tensorboard / graph中看到)。
.ckpt-data
包含所有变量的值,没有结构。要在python中恢复模型,通常会使用元数据和数据文件(但您也可以使用.pb
文件):
saver = tf.train.import_meta_graph(path_to_ckpt_meta)
saver.restore(sess, path_to_ckpt_data)
我不完全知道.ckpt-index
,我想这是内部需要的某种索引才能正确映射前两个文件。无论如何,通常情况下并不是必需的,您可以仅使用.ckpt-meta
和.ckpt-data
恢复模型。
.pb
文件可以保存整个图表(元数据+数据)。要在c ++中加载和使用(但不训练)图形,您通常会使用freeze_graph
创建的图形,它会从元数据和数据创建.pb
文件。小心,(至少在之前的TF版本和某些人中)freeze_graph
提供的py函数无法正常工作,因此您必须使用脚本版本。 Tensorflow还提供tf.train.Saver.to_proto()
方法,但我不知道它到底做了什么。
这里有很多关于如何保存和恢复图表的问题。例如,请参阅答案here,但要注意两个引用的教程虽然真的很有用,但远非完美,很多人似乎仍然很难用c ++导入模型。
修改强>: 它看起来像you can also use the .ckpt files in c++ now,所以我猜你不一定需要.pb文件。