2017-08-31 76 views
1

我剛剛進入機器學習,我一直在看TensorFlow。假設我正在構建一個使用TensorFlow和訓練有素的模型的桌面應用程序。我不明白你最終如何捆綁應用程序。您是否會以某種方式保存已訓練模型的狀態並將其包含在應用程序中,或者是否所有用戶在首次啓動應用程序時都必須自行重新訓練模型?機器學習模型如何在應用程序中加載?

回答

2

有一篇關於HBO的精彩文章:How HBO’s Silicon Valley built 「Not Hotdog」 with mobile TensorFlow, Keras & React Native。不過,它深入研究細節。

機器學習模型(如神經網絡)由其結構及其參數/權重定義。結構是由你編寫的,權重是在訓練中學習的。如果你有兩個,你可以在任何地方重新創建模型,並運行你的預測或者你正在做的任何事情。

讓我們打電話給您的用戶將運行「客戶端」的應用程序。不,客戶不必重新學習模型,除非你特別需要。培訓是一個昂貴的過程,需要大量的數據集,內存和處理能力。很多你在行動中看到的酷酷模型,比如在FaceApp或其他應用上使用的模型,可能需要幾周的時間才能完成一個龐大的羣集的培訓。更不用說他們的數據集的大小可能有很多千兆字節。

對於很多深度學習模型,即使學習權重本身可能太大,並且/或者即使執行單個正向傳遞所需的處理能力對於移動電話或筆記本電腦來說也是太多了。這就是爲什麼許多ML應用程序實際上不會將模型與應用程序一起運送,而是讓模型在服務器上運行。客戶端只需發送一個輸入並在幾秒鐘後接收輸出。這樣你可以節省一些麻煩,但是會失去離線功能,併爲託管付出相當大的代價。

因此,讓我們忘了託管模型一秒鐘,並假設你有一個小的,輕量級的模型,你想與你的應用程序一起提供。最簡單的方法是將權重存儲在一個文件中,然後將其與您的應用程序一起打包。但是當然有許多庫和工具可以幫助你。對於TF示例,請查看TensorFlow mobile:https://www.tensorflow.org/mobile/

相關問題