我使用saver=tf.train.Saver()
保存了我训练的模型,然后得到了三种文件:
还有一个文件叫做:
与 .ckpt 文件有什么关系?
我看到有人只用.ckpt文件保存了模型,但我不知道该怎么做。
如何将模型另存为.pb文件?
最佳答案
saver.save(sess)
的旧版本输出,它等效于.ckpt-data
(请参见下文).ckpt-meta
包含元图,即计算图的结构,但不包含变量的值(基本上是在张量板/图中可以看到的值)。 .ckpt-data
包含所有变量的值,而没有结构。要在python中还原模型,通常会使用meta和data文件(但也可以使用.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
创建的图形,该图形由metat和data创建.pb
文件。请小心(至少在以前的TF版本中,并且对于某些人而言),freeze_graph
提供的py函数无法正常工作,因此您必须使用脚本版本。 Tensorflow还提供了tf.train.Saver.to_proto()
方法,但我不知道它的确切作用。 这里有很多有关如何保存和恢复图形的问题。例如,参见答案here,但是要注意,引用的两个教程虽然确实很有帮助,但远非完美,而且许多人似乎仍在努力地用c++导入模型。
编辑:
它看起来像you can also use the .ckpt files in c++ now,,所以我想您不再需要.pb文件。