使用 TensorFlow 2.0 進行深度學習:您需要知道的一切

已發表: 2021-01-05

TensorFlow 是 Google 的機器學習框架。 它主要用於與深度學習相關的任務,並與其他 Google API 無縫集成。 TensorFlow 顯然是目前業界最常用的深度學習庫之一,完全值得學習!

在本教程結束時,您將了解以下知識。

  • 什麼是 TensorFlow?
  • TF 2.0 有什麼新功能?
  • TensorFlow 與 Keras
  • 安裝 TensorFlow
  • TensorFlow 中的圖像分類器

目錄

什麼是 TensorFlow?

TensorFlow 最初是 Google 的開源深度學習庫,現在是端到端機器學習過程的完整框架。 您可能想知道 Google 為什麼選擇這個名稱以及“Tensor”是什麼意思。

什麼是張量?

張量實際上是多維數組,使您能夠對多維數組執行複雜的操作。 但是,它們不僅僅是一個 N 維數組。

張量還包括點積、加法、矩陣乘法等變換。

但為什麼它們很重要?

張量並不新鮮。 它們已經使用了很長時間,但它們的特性在深度學習領域被大量利用,其中數據通常是巨大的和多維的。

張量,就像 Numpy 數組一樣,也有形狀和數據類型。 所有的張量都是不可變的,就像 Python 的數字和字符串:你永遠不能更新一個張量的內容,只能創建一個新的。

但是,它們與通常的 Numpy 數組的不同之處在於它們能夠利用 GPU 內存和計算能力,這在數據是高維且大小為數百萬或更多時至關重要。

張量在 Facebook 的 Pytorch 和谷歌的 TensorFlow 等深度學習框架中得到了高度使用,甚至以它們的名字命名!

谷歌還開發了另一個人工智能加速器,稱為張量處理單元 (TPU),特別是針對 TensorFlow,它將優化提升到一個新的水平!

閱讀:深度學習中的正則化

TF 2.0 有什麼新功能?

Google 於 2015 年由 Google Brain 團隊發布了 TensorFlow 1 的第一個版本。

使用 TensorFlow 1.x 製作神經網絡並非易事,因為它需要編寫大量代碼。

懶惰的評價與急切的評價

使用 TensorFlow 1.x,過去需要創建會話並運行這些會話以生成任何“圖形”的輸出。 讓我們用下面的代碼來理解這一點

將張量流導入為 tf

a = tf.constant(1)
b = tf.constant(2)
c = tf.add(a, b)
打印(c)

運行上面的代碼不會給你想要的輸出,即 3。這是因為 TensorFlow 1.x 在會話中工作。

會話是一種包含所有變量和它需要進行的轉換的環境。

製作了一個轉換圖,直到通過運行 tf.session.run() 專門調用它才被評估。

因此,如果您這樣做,上面的代碼將返回您所期望的:

tf.Session.run(c)

這稱為惰性評估。 因為它懶惰地等待,直到它被明確告知運行。

這個漫長而復雜的過程需要解決,因此需要 TensorFlow 2.x。

TF 2.x 默認帶有 Eager 評估,這使我們非常容易編碼和運行進程。

現在沒有會話,在 TF 1.x 中花費 100 行的神經網絡訓練在 TF 2.x 中花費不到 20 行。

TensorFlow 的 Eager Execution 是一種命令式編程環境,它可以立即評估操作,而無需構建圖:操作返回具體值,而不是構建稍後運行的計算圖。

這使得開始使用 TensorFlow 和調試模型變得容易,並且還減少了樣板代碼。

TensorFlow 與 Keras

問題真的不在於 TensorFlow 與 Keras。 它是帶有 Keras 的 TensorFlow。 Keras 在 TensorFlow 1.x 上提供了一個高級 API,這使得使用它變得非常容易。

現在有了 TF 2.0,TensorFlow 已正式將 Keras 作為其 API 的一部分,用於使用 tf.keras 進行模型設計和訓練。

之前在 Keras 中完成的所有代碼現在建議在 TF 2.0 中使用 tf.keras 完成,因為它允許它使用所有 TensorFlow 組件和生態系統,例如:

  • TensorFlow Serving用於無縫地服務/部署 TensorFlow 模型。
  • TensorFlow Lite是 TensorFlow 的移動版本,能夠在 Android 和 IOS 上運行。
  • TensorFlow.js是一組 API,允許我們使用低級 JavaScript 線性代數庫或高級層 API 構建和訓練模型。 因此,深度學習模型可以在瀏覽器中進行訓練和運行。
  • TensorBoard是一套可視化工具,用於理解、調試和優化 TensorFlow 程序。

安裝 TensorFlow

如果您是機器學習的新手,那麼讓事情順利進行的最簡單方法是打開 Colab Notebook。 只需訪問 https://colab.research.google.com/ 並單擊“New Python 3 Notebook”。

確保內核在右上角顯示“已連接”。 好消息,TensorFlow 已預裝在 Google Colab 中。

瞧! 你都準備好了。

要檢查您是否使用了正確的版本,請運行以下代碼段。

將張量流導入為 tf
tf.__版本__

它應該說任何高於 2.0.0 的版本,你很高興。

TensorFlow 中的圖像分類器

現在讓我們回顧一下深度學習問題的“Hello World”——MNIST 數據集。

我們將構建一個簡短的神經網絡來預測 MNIST 數據集。 我們將按照以下步驟進行。

  1. 構建一個對圖像進行分類的神經網絡。
  2. 訓練神經網絡。
  3. 評估模型的準確性

導入 TensorFlow。

將張量流導入為 tf

加載 MNIST 數據。

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

通過堆疊層構建一個 tf.keras.Sequential 模型。

我們需要為模型訓練選擇一個優化器和一個損失函數。

模型 = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, 激活='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10)
])

定義稀疏分類交叉熵損失函數。

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

編譯模型。

model.compile(optimizer='adam',
損失=損失_fn,
指標=['準確性'])

用 5 個 epoch 訓練模型。

model.fit(x_train, y_train, epochs=5)

評估模型。

model.evaluate(x_test, y_test, 詳細=2)

313/313 – 0s – 損失:0.0825 – 準確度:0.9753

[0.082541823387146, 0.9753000140190125]

圖像分類器現在在這個數據集上被訓練到大約 98% 的準確率。

在你走之前

TensorFlow 2 專注於簡單性和易用性,包括即時執行、直觀的高級 API 和在任何平台上靈活的模型構建等更新。

TensorFlow 是當今任何深度學習任務的首選庫/工具。 另一個最常用和流行的庫是 Facebook 的 PyTorch。

TensorFlow 的擴展生態系統使其成為您開始深度學習之旅的好地方。 它易於理解,更重要的是易於實施。

最好的起點是用戶友好的 Sequential API。 您可以通過將構建塊插入在一起來創建模型。 了解有關深度學習技術的更多信息。

結論

因此,既然您已經詳細了解了所有主要的深度學習框架,您就可以做出明智的決定並選擇最適合您項目的框架。

如果您有興趣了解有關深度學習和人工智能的更多信息,請查看我們的機器學習和人工智能 PG 文憑課程,該課程專為在職專業人士設計,並提供 30 多個案例研究和作業、25 多個行業指導課程、5 多個實踐手- 頂石項目,超過 450 小時的嚴格培訓和頂級公司的就業幫助。

為未來的職業做準備

機器學習和人工智能的 PG 文憑
了解更多