Tensorflow lite 模型轉換

由於 TensorFlow Lite 運行在客戶端本地,開發者必須要在桌面設備上提前訓練好一個模型。並且爲了實現模型的導入,還需要認識一些其他類型的文件,比如:Graph Definition, Checkpoints 以及 Frozen Graph。各種類型的數據都需要使用 Protocol Buffers(簡稱 ProtoBuff)來定義數據結構,有了這些 ProtoBuff 代碼,你就可以使用工具來生成對應的 C 和 Python 或者其它語言的代碼,方便裝載、保存和使用數據。

Graph Def

關於 Graph Def(Graph Definition)文件,有兩種格式。拓展名爲 .pb 的是二進制 binary 文件;而 .pbtxt 格式的則是更具可讀性的文本文件。但是,實際使用中,二進制文件有着相當高的執行效率和內存優勢。

Graph Def 是你訓練的模型的核心,它定義了 node 的關係結構,方便由其他的進程來讀取。比如下面這個 Graph Def 就定義了“矩陣 A與矩陣 B 相乘得到矩陣 C”的描述。

Checkpoint

Checkpoint 文件是來自 TensorFlow 圖的序列化變量。這個文件當中沒有圖的結構,所以不會被解釋。在訓練學習的過程中,Checkpoint 文件記錄了不同的 Iteration 中變量的取值。

Frozen Graph

用 Graph Def 和 Checkpoint 生成 Frozen Graph 的過程叫做“冷凍”。爲什麼稱之爲冷凍呢?我們知道,生成 Frozen Graph 所需要的量都是從 Checkpoint 當中得到的,那麼這個變量轉爲常量的過程就被形象地稱之爲“冷凍”了。

TensorFlow Lite 模型

TensorFlow Lite 所用的模型是使用 TOCO 工具從 TensorFlow 模型轉化而來的,來源就是經過冷凍生成的 Frozen Graph。假如你已經得到了一個“夠用”的模型了,而且你也沒有源代碼或者數據來重新進行訓練,那麼就使用當前的模型吧,沒有任何問題。但如果你有源代碼和數據,直接使用 TOCO 工具進行模型轉化將會是最好的選擇。

參考文章:https://www.jianshu.com/p/fa204a54a956?from=singlemessage

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章