TensorFlow 2.0簡介

簡要介紹Tensorflow 2.0的某些功能

TensorFlow 2.0簡介

> Source: Keep-calm.net

在本文中,我將介紹我對TensorFlow的探索中的一些發現,該想法將與TensorFlow一起圍繞圖像分類構建和監控ML模型,以及比我幾周前構建的汽車數據集更好的數據集 。

TensorFlow Kezako?

TensorFlow是Google Brain於2011年啟動的一個研究項目,多年來一直在Alphabet小組中非常受歡迎。 該框架因其高度靈活的架構而在機器學習社區中廣受歡迎,該架構可以利用CPU,GPU或TPU等不同類型的處理單元來執行計算,而無需對正在運行的代碼進行大量修改。

該框架自2015年以來一直是開源的,在全球範圍內似乎非常流行,下載量超過7600萬。 Google提供了多種API來與Python,Javascript,C ++,Java和Go等框架進行交互。

TensorFlow擁有多種工具來生成機器學習系統:

· TensorFlow(dah)

· TensorFlow.js

· TensorFlow lite在嵌入式系統中部署機器學習模型

· TensorFlow擴展到機器學習管道產品化

· TensorFlow Quantum是"用於快速構建混合量子經典ML模型原型的庫"

工具集非常廣泛,實際上,我建議您查看上面的不同文檔,這些文檔將使您對工具有個很好的瞭解。

我只是要談談TensorFlow,但我計劃在幾周後瀏覽一下Lite和.js工具(我訂購了一臺設備對其進行測試)

TensorFlow,如何建立ML模型?

要與TensorFlow進行交互,最流行的API之一就是Python(坦白地說,我更喜歡使用該API),但是有兩種與該API交互的途徑:

· 初學者正在使用一種稱為Keras的用戶友好順序API

· 使用子類化API的專家級專家更多是pythonic

我為您附上兩種API格式示例的快照

TensorFlow 2.0簡介

> Source : Tensorflow overview

對我來說,我真的會建議您使用Keras,對於非Python專家來說,它可能更易於閱讀。 最初在TensorFlow 1.x版本中使用的該API並不是本機API(因為2.0是本機API),必須單獨安裝才能訪問它。

Keras是一種API,可以在TensorFlow,CNTK和Theano等各種ML框架之上運行,以幫助人們輕鬆重用函數來構建層,求解器等,而不必深入瞭解ml框架(在某種程度上是抽象層)。

讓我們構建一些模型來測試框架。

模型構造

在這一部分中,我將不解釋我將要使用的模型的體系結構(也許在特定的文章中)。 要開始構建模型,我首先需要將框架連接到數據。

數據被劃分為與訓練,驗證和測試集相關的文件夾,在每個文件夾中,每個類別都有一個子文件夾,以預測其中包含將用於該過程的所有圖片的子文件夾。 有一個圖表示訓練集中每個班級的圖片分佈。

TensorFlow 2.0簡介

驗證和測試集中類的重新劃分與訓練集中的數據少(訓練整個數據集的80%,驗證10%和測試10%)相同。

要在模型中使用數據,可以像TensorFlow本教程中一樣使用數據生成器,其中有代碼的快速快照。

此代碼的目的是:

· 標準化圖片(RGB從0–255到0–1的值轉換)

· 調整圖片大小

· 建立不同批次的培訓

它需要應用於所有文件夾,但是之後一切準備就緒即可開始模型的訓練。

在模型方面,我重用了TensorFlow教程的模型設計,並將其應用於其他一些資源。 這些模型可以在以下要點中找到:

· TensorFlow的CNN教程

· Aurelien Geron的MLP在他的書《使用Scikit-Learn,Keras和TensorFlow進行機器學習》中的第10章

· Sebastian Raschka和Vahid Mirjalil的CNN在他們的Python機器學習一書的第15章中

該模型的輸入和輸出已進行調整以滿足我的需求,但是大多數代碼來自所列的各種資源。 同樣,這些模型只是用來測試框架,對於我的問題而言,它們並不是最佳的(並且需要大量改進)。

通過執行數據生成和模型構建,幾分鐘後即可準備好模型。

TensorFlow 2.0簡介

現在讓我們看一下TensorFlow的監視組件。

模型監控

為了監視您的模型,TensorFlow有兩條路徑(對我而言):

· 使用模型擬合操作的歷史記錄來訪問已計算的各種指標(在這種情況下,損失和準確性)

<code>acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss=history.history['loss']
val_loss=history.history['val_loss']/<code>

例如,使用matplotlib,歷史記錄的輸出可用於輕鬆繪製圖形。

TensorFlow 2.0簡介

另一種方法是使用一個名為Tensorboard的組件,該組件與TensorFlow相關聯,可在運行過程中實時收集各種指標以構建模型(cf gif),可視化數據的體系結構等。

TensorFlow 2.0簡介

> Source: Tensorboard documentation

最近,Google宣佈可以通過tensorboard.dev計劃與所有人共享儀表板,例如,您可以在此鏈接中找到與我為此項目的一些運行相關聯的tensorboard。

Tensorboad是一個有趣的倡議,他們在上次TensorFlow開發者峰會上宣佈了許多新功能,但是老實說我不是一個經驗豐富的深度學習從業者,所以我不是一個很好的倡導者,這個對我來說看起來很複雜的組件卻在思考 對於與mlflow關聯的數據科學工具箱來說,它可能是一個非常不錯的工具。

為了完成此分析,我想介紹另一個名為TensorFlow集線器的組件。

與TensorFlow集線器共享模型

如果我正在閱讀有關某些神經網絡架構的非常好的文章,那麼TensorFlow集線器就是從Google誕生的,它看起來非常有前途,但是在調查過程中可能會出現很多問題,例如:

· 如何複製本文?

· (在文章中為回購的情況下)是模型的最新版本嗎?

· 數據在哪裡?

· (在文章中為回購的情況下)使用這段代碼是否安全?

TensorFlow中心希望人們能夠限制所有這些問題,併為ML開發提供更大的透明度。

TensorFlow樞紐的一個非常有趣的功能是幫助人們使用著名且健壯的模型的組件來構建機器學習模型,這種方法是重用另一個模型的模型權重,這被稱為轉移學習。

藉助TensorFlow集線器,您可以非常輕鬆地在另一行模型的幾行代碼組件中重用,在下面的要點中,展示了一個代碼示例,該代碼可以重用在對象分類中非常流行的模型Mobilenetv2的特徵提取器(主要是 受TensorFlow教程啟發)。

現在讓我們總結一下這個分析

反饋

初次動手TensorFlow非常好,我發現該教程做得很好且易於理解,您可以使用框架的Keras API輕鬆構建神經網絡。 在此屏幕截圖中可以看到,我還沒有測試很多組件

TensorFlow 2.0簡介

> Source: Tensorflow documentation

我添加了一個機會來看看TensorFlow Extended(TFX),這是Google建立機器學習管道的方法,我嘗試在AWS EC2實例上進行嘗試,但是教程在某個時候崩潰了,但我邀請您觀看 Robert Crowe的精彩演講更詳細地介紹了該工具。

該方法看起來非常有前途,我真的很好奇看到TFX和Kubeflow(基於Kubernetes的Google的另一條ML管道)之間將存在交互。

我對TensorFlow的唯一擔憂/詢問是處理單元的使用情況,在測試期間,我在CPU和GPU之間進行了輪換,但對處理的監視並未顯示出處理單元的全部功能(但是我可能只是一個新手) )。

另一個提高TensorFlow效率的途徑是使用tfRecords,但似乎數據管理仍然是一個熱門話題(從我周圍聽到的信息),我發現有關TensorFlow的鑲木地板文件管理的一個非常有趣的Pydata討論。

關於深度學習的下一個任務是:

· 對Facebook製作的Pytorch進行簡要介紹,這似乎是TensorFlow的剋星,該框架在研究界贏得了廣泛關注

· 深入學習深度學習算法以構建不錯的汽車分類器

· 瞭解這些深度學習模型在生產中的部署(數據管理,服務等)

(本文翻譯自Jean-Michel D的文章《Introduction on TensorFlow 2.0》,參考:https://towardsdatascience.com/introduction-on-tensorflow-2-0-bd99eebcdad5)


分享到:


相關文章: