TensorFlow Hub介绍:TensorFlow中可重用的机器学习模块库
摘要: 本文對TensorFlow Hub庫的介紹,并舉例說明其用法。
在軟件開發中,最常見的失誤就是容易忽視共享代碼庫,而庫則能夠使軟件開發具有更高的效率。從某種意義上來說,它改變了編程的過程。我們常常使用庫構建塊或模塊,并將其連接在一起進行編程。
開發人員是如果使用庫的呢?除了共享代碼之外,我們還可以共享預訓練模型。共享預訓練模型能夠使開發人員有針對性的開發該模型,而不需要訪問計算資源或手頭上用于訓練模型的原始數據。例如,NASNet架構在GPU上花費數千個小時進行訓練。通過共享學習到的權重,其他開發人員就能夠更容易重用庫和構建模型或架構。
機器學習模型內部的“組成部分”,可以使用TensorFlow Hub進行打包和共享。從某種意義上來講,除了架構本身,共享預先訓練好的模型的同時,也共享了開發模型的計算時間和數據集。
為機器學習開發者提供庫產生了TensorFlow Hub庫。TensorFlow Hub庫是一個在TensorFlow中進行發布和重用中機器學習模塊的平臺。我們可以在其他類似的任務中重復使用一個模塊(一個TensorFlow的獨立片段及其權重)。 開發人員也可以重用一個模塊使用一個更小的數據集來訓練模型,來提高泛化或加快訓練速度。下面來看幾個具體的例子。
圖像再訓練
首先,我們從少量的訓練數據開始——圖像分類器?,F代圖像識別模型具有數百萬個參數,如果從頭開始訓練,就需要大量的標記數據和計算能力。使用圖像再訓練技術,就可以使用很少的數據來訓練模型,并且計算時間也少得多。以下是TensorFlow Hub的外觀。
其基本思想是,用一個現成的圖像識別模塊從圖像中提取特征訓練一個新的分類器。正如你所看到的一樣,TensorFlow Hub模塊可以在構建TensorFlow圖時通過URL(或文件路徑)進行實例化。TensorFlow Hub上有多種模塊可供選擇,包括NASNet、MobileNet(包括其最近的V2)、Inception、ResNet等。想要使用某一模塊,首先導入TensorFlow Hub,然后將模塊的URL地址復制/粘貼到代碼中即可。
TensorFlow Hub上提供的圖像模塊
每個模塊都有一個已定義的接口,在不了解其內在結構的情況下,也能夠替換使用。這個模塊提供了一個檢索預期圖像大小的方法:只需提供一組有正確形狀的圖像,然后調用該模塊來檢索圖像的特征表示。該模塊負責對圖像進行預處理,可以直接將圖像轉換為其特征表示,然后再構建一個線性模型或其他類型的分類器。
請注意,我們使用的模塊是由Google開發的,并且是版本化的(因此模塊在實驗中不會改變)。和普通Python函數一樣,我們也可以使用該模塊來構建模型的一部分。一旦導出到磁盤,模塊是獨立的,無需訪問創建和訓練該模塊的代碼和數據(也可以發布代碼和數據),也能供其他人所使用。
文本分類
現在你想訓練一個模型:將電影評論分為正面或負面,但是只有少量的訓練數據(比如只有幾百個正面和負面的電影評論)。由于訓練數據有限,因此你打算使用以前在大得多的語料庫上訓練過的詞嵌入數據集。以下是使用TensorFlow Hub思路。
同樣,首先選擇一個模塊。TensorFlow Hub提供了多種文本模塊,包括基于各種語言(EN,JP,DE和ES)的神經網絡語言模型,在維基百科上訓練的Word2vec模型和在Google新聞上訓練的NNLM嵌入。
在TensorFlow Hub上的一些文本模塊
在這里,我們使用一個模塊來進行文本嵌入。使用上面的代碼下載一個模塊,用來對一個句子進行預處理,然后檢索每個塊的嵌入,這就意味著可以直接將數據集中的句子轉換為適合分類器的格式。該模塊負責標記句子和其他邏輯(如處理詞典外的單詞)。預處理邏輯和嵌入都封裝在一個模塊中,使在各種不同的數據集上的文字嵌入和預處理策略變得更加容易,而不必對代碼進行大幅度的變動。
使用TensorFlow Hub的文本分類教程
通用句子編碼器
我們還分享了一個新的TensorFlow Hub模塊!下面是通用句子編碼器。它是在各種各樣的數據集(“通用”)上訓練的句級嵌入模塊。其功能是語義相似性、自定義文本分類和聚類。
這篇文章展示了如何在任何一個可嵌入句子的TF-Hub模塊上訓練一個簡單的二進制文本分類器。
如在圖像再訓練中,使用相對較少的標記數據使模塊適應某一任務,如餐廳評論。查看本教程以了解更多信息。
其他模塊
TensorFlow Hub不僅僅是圖像和文本分類。用于Progressive GAN和Google地標深層特征的其他模塊請查看鏈接。
注意事項
使用TensorFlow Hub模塊時需要考慮幾個重要因素:首先,請記住模塊包含的可運行的代碼,一定要使用可信來源的模塊;其次,正如所有的機器學習一樣,公平性是一個很重要的因素。
上面的兩個例子都使用了預先訓練好的大數據集。當重復使用這樣的數據集時,注意其包含的數據是否存在偏差,以及這些是如何影響正在構建的模型和用戶的。
原文鏈接
干貨好文,請關注掃描以下二維碼:
總結
以上是生活随笔為你收集整理的TensorFlow Hub介绍:TensorFlow中可重用的机器学习模块库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FPGA资源平民化的新晋- F3 技术解
- 下一篇: 当你和天猫精灵对话时,它在想什么?阿里智