2017-02-27 53 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 
相關問題