Tensorflow:.ckpt文件与.ckpt.meta和.ckpt.index以及.pb文件之间是什么关系

发布于 2021-01-29 17:12:01

我曾经saver=tf.train.Saver()保存过我训练过的模型,然后得到了三种文件名为:

  • .ckpt.meta
  • .ckpt.index
  • .ckpt.data

还有一个文件叫做:

  • 检查站

.ckpt 文件是什么连接?

我看到有人只用.ckpt文件保存了模型,但我不知道该怎么做。如何将模型另存为.pb文件?

关注者
0
被浏览
170
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    • .ckpt文件是的旧版本输出saver.save(sess),与您的输出等效.ckpt-data(请参见下文)

    • “ checkpoint”文件仅在此处告诉一些TF函数,这是最新的checkpoint文件。

    • .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,它会.pb根据元数据和数据创建文件。注意(至少在以前的TF版本中,并且对于某些人而言),提供的py函数freeze_graph无法正常工作,因此您必须使用脚本版本。Tensorflow也提供了一种tf.train.Saver.to_proto()方法,但是我不知道它到底在做什么。

    这里有很多有关如何保存和恢复图形的问题。例如,在此处查看答案,但请注意,引用的两个教程虽然确实很有帮助,但远非完美,而且许多人似乎仍在努力地用c
    ++导入模型。

    编辑 :看起来您现在也可以在c++中使用.ckpt文件,所以我想您不必再需要.pb文件。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看