【问题标题】:Using inception-v3 checkpoint file in tensorflow在 tensorflow 中使用 inception-v3 检查点文件
【发布时间】:2017-02-27 11:46:29
【问题描述】:

在我的一个项目中,我使用了一个公开的预训练 inception-v3 模型,可在此处获得:http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz

我只想使用最后一个特征向量(pool_3/_reshape:0 的输出)。通过查看脚本示例classify_image.py,我可以成功地将图像通过Deep DNN,提取瓶颈张量(bottleneck_tensor = sess.graph.get_tensor_by_name('pool_3/_reshape:0'))并将其用于进一步的目的。

我最近看到有一个更新的训练好的初始模型。培训检查点可在此处获得:http://download.tensorflow.org/models/image/imagenet/inception-v3-2016-03-01.tar.gz

我想使用这个新的预训练而不是旧的。但是文件格式不同。 “旧模型”使用 ProtocolBuffer 形式的图形定义 (classify_image_graph_def.pb),易于重用。 “新”只提供了一种检查点格式,我正在努力将其插入到我的代码中。

有没有一种简单的方法可以将检查点文件转换为可用于创建图表的 ProtocolBuffer 文件?

【问题讨论】:

标签: tensorflow protocol-buffers


【解决方案1】:

看来你必须使用freeze_graph.pyhttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/tools/freeze_graph.py

脚本将检查点变量转换为独立 GraphDef 文件中的常量操作。 该脚本旨在获取 GraphDef 原型、SaverDef 原型和存储在检查点文件中的一组变量值,并输出一个 GraphDef,其中所有变量 ops 转换为包含 变量。 当我们需要在 C++ 中加载单个文件时,这样做很有用,尤其是在移动或嵌入式环境中,我们可能无法访问它们所依赖的 RestoreTensor 操作和文件加载调用。

命令行使用示例如下:

bazel build tensorflow/python/tools:freeze_graph && \
bazel-bin/tensorflow/python/tools/freeze_graph \
--input_graph=some_graph_def.pb \
--input_checkpoint=model.ckpt-8361242 \
--output_graph=/tmp/frozen_graph.pb --output_node_names=softmax

【讨论】:

    猜你喜欢
    • 2018-01-06
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 2017-10-24
    • 2016-09-17
    • 2018-05-20
    相关资源
    最近更新 更多