如何将.ckpt移植到.pb,以便在Tensorflow for Mobile诗人中使用

2024-06-11 05:56:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个经过预训练的InceptionV3模型(.ckpt)从openimages数据集转换为一个.pb文件,以便在Tensorflow for Mobile诗人示例中使用。我已经搜索了网站和GitHub存储库,但没有找到任何结论性的答案。在

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

谢谢你的回复。在


Tags: 文件数据模型github示例for网站tensorflow
1条回答
网友
1楼 · 发布于 2024-06-11 05:56:25

下面我列出了一些我正在编写的文档草稿,可能会有帮助。另一件要注意的事情是,如果您使用Slim,您需要首先运行export_inference_graph.py来获得一个.pbgraphdef文件。在

在大多数情况下,使用TensorFlow训练模型将得到一个包含GraphDef文件(通常以.pb或.pbtxt扩展名结尾)和一组检查点文件的文件夹。移动或嵌入式部署需要的是一个单独的GraphDef文件,该文件被“冻结”,或者将其变量转换为内联常量,以便所有内容都放在一个文件中。 要处理转换,需要冻结_图形.py脚本,保存在tensorflow/pythons/tools/freeze中_图形.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应该是最近保存的检查点。正如在checkpoint部分中提到的,您需要在这里为检查点集提供公共前缀,而不是提供完整的文件名。 output_graph定义生成的冻结GraphDef的保存位置。因为它可能包含很多权重值,在文本格式中会占用大量空间,所以它总是保存为二进制协议。 output_node_names是要从中提取图形结果的节点的名称列表。之所以需要这样做,是因为冻结过程需要了解图中哪些部分是实际需要的,哪些是培训过程的工件,比如摘要操作。只保留有助于计算给定输出节点的操作。如果您知道如何使用图形,那么这些应该是作为提取目标传入Session::Run()的节点的名称。如果您手头没有这些信息,可以通过运行summarize_graph工具来获得关于可能输出的一些建议。 由于TensorFlow的输出格式随着时间的推移而改变,因此还有许多其他不常用的标志可用,比如input_saver,但希望您不需要在使用现代框架版本训练的图形上使用这些标志。在

相关问题 更多 >