nic*_*ine 13 python tensorflow object-detection-api
我有一个训练有素的模型(Faster R-CNN),导出该模型export_inference_graph.py可用于推理。我想了解创造之间的区别frozen_inference_graph.pb,并saved_model.pb也model.ckpt*文件。我也看到了.pbtxt表示形式。
我尝试通读此书,但找不到真正的答案:https : //www.tensorflow.org/extend/tool_developers/
这些文件包含哪些内容?哪些可以转换为其他?每个的理想目的是什么?
T. *_*her 17
Frozen_inference_graph.pb,是一个冻结的图,无法再对其进行训练,它定义了graphdef,实际上是一个序列化图,可以用以下代码加载:
def load_graph(frozen_graph_filename):
with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
return graph_def
tf.import_graph_def(load_graph("frozen_inference_graph.pb"))
Run Code Online (Sandbox Code Playgroud)
保存的模型是由tf.saved_model.builder生成的模型,必须将其导入到会话中,此文件包含具有所有训练权重的完整图(就像冻结图一样),但是可以在此处对其进行训练,而这个未序列化,需要通过此代码段加载。[]是tagconstant,可以由saved_model_cli读取。该模型通常也可以用来进行预测,例如Google ml引擎标准示例:
with tf.Session() as sess:
tf.saved_model.loader.load(sess, [], "foldername to saved_model.pb, only folder")
Run Code Online (Sandbox Code Playgroud)
model.ckpt文件是在训练过程中生成的检查点,用于在训练后出现问题时恢复训练或进行备份。如果您有一个已保存的模型和一个冻结的图,则可以忽略它。
.pbtxt文件与先前讨论的模型基本相同,但随后为人类可读的文件,而不是二进制文件。这些也可以忽略。
要回答您的转换问题:尽管从冻结图提取的save_model也无法训练,但是可以将保存的模型转换为冻结的图,反之亦然,但是存储模型的方式为保存的模型格式。可以读取检查点并将其加载到会话中,然后您可以在其中建立保存的模型。
希望我能提供帮助,有任何问题,请问问!
补充一下,frozen_graph.pb 包括两件事:1. Graph 定义 2. 训练参数
而save_model.pb,只有图形定义。
这就是为什么如果你检查两个 .pb 文件的大小,frozen_graph.pb 的大小总是更大。
| 归档时间: |
|
| 查看次数: |
5803 次 |
| 最近记录: |