繁体   English   中英

如何将.ckpt移植到.pb以在Tensorflow中用于移动诗人

[英]How to Port a .ckpt to a .pb for use in Tensorflow for Mobile Poets

我正在尝试将来自Open Images数据集的预训练的InceptionV3模型(.ckpt)转换为.pb文件,以用于Tensorflow for Mobile Poets示例。 我已经搜索了该站点以及GitHub Repository,但没有找到任何确定性的答案。

(OpenImages初始模型: https : //github.com/openimages/dataset

谢谢你的回复。

下面,我提供了一些我正在研究的文档草案,这可能会有所帮助。 需要注意的另一件事是,如果您使用的是Slim,则首先需要运行export_inference_graph.py来获取.pb GraphDef文件。

在大多数情况下,使用TensorFlow训练模型将为您提供一个文件夹,其中包含GraphDef文件(通常以.pb或.pbtxt扩展名结尾)和一组检查点文件。 移动或嵌入式部署所需的是一个已被“冻结”的GraphDef文件,或者将其变量转换为内联常量,因此所有内容都在一个文件中。 要处理转换,您需要冻存在tensorflow / pythons / tools / freeze_graph.py中的freeze_graph.py脚本。 您将像这样运行它:

bazel build tensorflow/tools:freeze_graph bazel-bin/tensorflow/tools/freeze_graph \\ --input_graph=/tmp/model/my_graph.pb \\ --input_checkpoint=/tmp/model/model.ckpt-1000 \\ --output_graph=/tmp/frozen_graph.pb \\ --input_node_names=input_node \\ --output_node_names=output_node \\

input_graph参数应指向保存您的模型体系结构的GraphDef文件。 您的GraphDef可能已经以文本格式存储在磁盘上,在这种情况下,它很可能以'.pbtxt'而不是'.pb'结尾,并且您应该在命令中添加额外的--input_binary=false标志。 input_checkpoint应该是最近保存的检查点。 如检查点部分所述,您需要在此处为​​检查点集提供通用前缀,而不是完整的文件名。 output_graph定义结果冻结的GraphDef的保存位置。 因为它可能包含大量的权重值,它们以文本格式占用大量空间,所以它始终保存为二进制protobuf。 output_node_names是要从中提取图形结果的节点名称的列表。 这是必需的,因为冻结过程需要了解图形的哪些部分是实际需要的,哪些是训练过程的工件(如摘要操作)。 仅保留有助于计算给定输出节点的操作。 如果您知道将如何使用图形,则这些应该只是传递给Session :: Run()作为获取目标的节点的名称。 如果您没有这些信息,可以通过运行summarize_graph工具获得有关可能输出的一些建议。 由于TensorFlow的输出格式已随时间发生了变化,因此还有许多其他不常用的标志,例如input_saver ,但希望您不应该在使用现代框架版本训练的图形上使用这些标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM