2016-06-08 52 views
1

我想加載一個模型,我在tensorflow android應用程序上訓練了自己。我在Caffe中訓練了模型,然後將其轉換爲Tensorflow,但我確信這不是問題,因爲我使用classify.py對其進行了測試,並且它可以正常工作。Android應用程序在加載訓練後的tensorflow protobuf模型後崩潰

然後我序列化模型並將其放入.pb中,我用我的替換tensorflow_inception_graph.pb(並將其命名爲相同)。我可以使用bazel構建應用程序,但是當我將它安裝在手機上並運行它時,它會立即崩潰。我認爲罪魁禍首是以下錯誤:

F/native (26026): tensorflow_jni.cc:309 Error during inference: Invalid argument: No OpKernel was registered to support Op 'FIFOQueue' with these attrs 
F/native (26026): [[Node: processed_queue = FIFOQueue[capacity=1, component_types=[DT_INT32, DT_FLOAT], container="", shapes=[[], [224,224,3]], shared_name=""]()]] 

但我真的不知道如何解決它。

此外,apk有整個protobuf裏面。

感謝您的幫助。

回答

1

不幸的是,您遇到了TensorFlow的移動構建目標限制。默認情況下,我們只包含推理通常需要的操作,不包括FIFOQueue。

假設您在移動設備的推理過程中不需要運行該操作,可以使用strip_unused.py腳本並傳入輸入和輸出操作名稱。這將除去在給定輸入節點處開始輸出直接需要的操作,所以應去除FIFOQueue和其他訓練操作。