當前位置:成語大全網 - 新華字典 - tensorflow訓練的模型壹般多大

tensorflow訓練的模型壹般多大

tensorflow.js等庫給web開發者帶來了太多可能性。

然而,直接在瀏覽器中運行的深度模型也帶來了新的挑戰和限制,畢竟壹些現存的模型不是為在客戶端瀏覽器中運行而設計的,更別說移動端瀏覽器了。就拿當前最先進的目標檢測模型來說:它們通常需要大量計算資源才能以合理的fps運行,更別說實時運行了。另外,對壹個簡單的web應用來說,分發100MB以上的模型權重至客戶端瀏覽器也不現實。

為web訓練高效的深度學習模型

不過不要放棄希望!基於壹些基本原則,我們可以創建和訓練很不錯的模型,為在web環境中運行而優化。信不信由妳,實際上我們可以訓練相當不錯的圖像分類模型,甚至是目標檢測模型,大小不過幾兆,甚至幾百K:

這篇文章將給出壹些通用的建議,幫助妳開始訓練自己的卷積神經網絡(CNN),以及壹些基於tensorflow.js為web應用和移動端瀏覽器訓練CNN的建議。

妳和我說要在瀏覽器裏訓練深度學習模型?

妳也許會好奇:為什麽要在瀏覽器裏基於tensorflow.js訓練我的模型,而不是直接在自己的機器上基於tensorflow訓練模型?妳當然可以在自己的機器上訓練,特別是如果妳的機器配備了NVIDIA顯卡。tensorflow.js在底層使用了WebGL加速,所以在瀏覽器中訓練模型的壹個好處是可以利用AMD顯卡。另外,在瀏覽器中訓練模型,可以更好地保護用戶隱私,更容易讓用戶信任。

網絡架構

顯然,訓練模型之間,首先需要實現模型。通常人們會建議挑選壹個久經考驗的現有架構,比如YOLO、SSD、ResNet、MobileNet等。

我個人認為,在設計自己的架構時應用現有架構的壹些概念是很有價值的,但直接在web應用中引入這些現存架構可能不妥,因為我們想要尺寸較小、推理較快(理想情況下能實時推理)、容易訓練的模型。

不管妳是打算引入壹個現有架構,還是完全從頭開始,都可以參考下面的壹些建議,在我自己為web設計高效CNN架構時,這些建議幫助很大:

1. 從小型架構開始

牢記,能夠取得較好的精確度的網絡越小,它進行推理的時間越短,用戶下載、緩存模型更容易。此外,較小的模型參數較少,因此在訓練時收斂更快。

如果發現當前的網絡架構表現不是很好,或者沒有達到妳想要的精確度,妳仍然可以逐漸增加網絡的尺寸,例如,增加每層的卷積過濾器數量,或者直接堆疊更多網絡層,構造更深的網絡。

2. 應用深度可分離卷積

既然我們是要打造壹個新模型,毫無疑問我們想要使用深度可分離卷積,而不是傳統的2D卷積。深度可分離卷積將常規的卷積操作分為兩部分,首先分頻道進行卷積,接著應用1x1卷積。和常規卷積操作相比,深度可分離卷積的參數更少,這意味著更少的浮點運算,更容易並行化,推理更快(我曾經碰到過,僅僅將常規卷積替換為深度可分離卷積後,推理就加速了10x),更少的資源占用(在移動設備上意味著性能提升)。此外,因為參數更少,訓練所需時間也更短。