2017-02-27 22 views
0

在我的一个项目中,我使用了一个公开的预先训练的启动-v3模型:http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz在tensorflow中使用inception-v3检查点文件

我只想使用最后一个特征矢量(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

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

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

在此先感谢!

+0

你已经采取了看看这个教程? https://www.tensorflow.org/programmers_guide/variables#checkpoint_files它解释了如何从检查点文件恢复。 – Neal

回答

0

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

脚本检查点变量分为常量OPS转换在一个独立的GraphDef文件。 该脚本旨在将GraphDef原型,SaverDef原型和一组存储在检查点文件中的变量值输出到GraphDef中,并将所有变量op转换为包含 变量值的const 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 
相关问题