2017-08-22 29 views

回答

1

如果.pbtxt文件實際上是TensorFlow圖形的文本表示,那麼否,Android API目前不接受該文件,而是需要圖形的二進制表示。

也就是說,如果你有.pbtxt文件,你可以很容易地將其轉換爲二進制協議緩衝與Python的幾行:

import tensorflow as tf 
from google.protobuf import text_format 

with open('/tmp/myfile.pbtxt') as f: 
    txt = f.read() 
gdef = text_format.Parse(txt, tf.GraphDef()) 

tf.train.write_graph(gdef, '/tmp', 'myfile.pb', as_text=False) 

或者,如果您可以控制生成的pbtxt文件管道首先,也許你可以改變它以二進制格式寫出文件?

希望有所幫助。

+0

謝謝大副。我現在能夠生成.pb文件。但是當我在我的移動應用程序中使用這個.pb文件時,預測會變成零 –

0

看來你可以找到你的答案here,但首先你需要.ckpt文件。

cmd爲模型的自由圖,注意ouput節點名,可以從.pbtxt文件中獲取。

bazel-bin/tensorflow/python/tools/freeze_graph --input_graph=/home/scopeserver/RaidDisk/DeepLearning/resnetv2.pbtxt --input_checkpoint=/home/scopeserver/RaidDisk/DeepLearning/slim/inception_resnet_v2.ckpt --output_graph=./inception_resetv2.pb --output_node_names=InceptionResnetV2/Logits/Predictions 

您可以運行此命令在Android應用的gradle一個任務。

+0

如何從圖表中找到output_node_names? – Blue

+0

@Blue有關output_node_names的任何想法? – zhkai

+0

我使用張量板來研究圖表,並在試錯的基礎上做了 – Blue

相關問題