如何使用 Keras 和 Embedding 層在 Python 中共享層?


Keras 是作為 ONEIROS 專案(開放式神經電子智慧機器人作業系統)研究的一部分而開發的。Keras 是一個用 Python 編寫的深度學習 API。它是一個高階 API,具有高效的介面,有助於解決機器學習問題。它執行在 TensorFlow 框架之上。它的構建是為了幫助以快速的方式進行實驗。它提供了開發和封裝機器學習解決方案所必需的基本抽象和構建塊。

它具有高度的可擴充套件性,並具有跨平臺功能。這意味著 Keras 可以執行在 TPU 或 GPU 叢集上。Keras 模型還可以匯出到 Web 瀏覽器或手機上執行。

Keras 已經存在於 TensorFlow 包中。可以使用以下程式碼行訪問它:

import tensorflow
from tensorflow import keras

Keras 函式式 API 有助於建立與使用順序 API 建立的模型相比更靈活的模型。函式式 API 可以處理具有非線性拓撲的模型,可以共享層並處理多個輸入和輸出。深度學習模型通常是一個包含多個層的有向無環圖 (DAG)。函式式 API 有助於構建層圖。

我們正在使用 Google Colaboratory 來執行以下程式碼。Google Colab 或 Colaboratory 有助於透過瀏覽器執行 Python 程式碼,並且無需任何配置即可免費訪問 GPU(圖形處理單元)。Colaboratory 是建立在 Jupyter Notebook 之上的。以下是使用 Python 實現 Keras 與 Embedding 層共享層的程式碼片段:

示例

print("Embedding for 2000 unique words mapped to 128-dimensional vectors")
shared_embedding = layers.Embedding(2000, 128)
print("Variable-length integer sequence")
text_input_a = keras.Input(shape=(None,), dtype="int32")
print("Variable-length integer sequence")
text_input_b = keras.Input(shape=(None,), dtype="int32")
print("Reuse the same layers to encode both the inputs")
encoded_input_a = shared_embedding(text_input_a)
encoded_input_b = shared_embedding(text_input_b)

程式碼來源 - https://www.tensorflow.org/guide/keras/functional

輸出

Embedding for 2000 unique words mapped to 128-dimensional vectors
Variable-length integer sequence
Variable-length integer sequence
Reuse the same layers to encode both the inputs

解釋

  • 函式式 API 模型使用共享層。

  • 這些共享層是可以多次在同一模型中重用的例項。

  • 這些層學習與圖中多個路徑相對應的特徵。

  • 共享層還用於編碼來自文字兩個不同部分的輸入,這些部分具有相同的詞彙表。

  • 這樣,就可以在不同的輸入之間共享資訊。

  • 因此,模型可以在較少的資料量上進行訓練。

  • 在上面的程式碼中,“Embedding”層在兩個不同的文字之間共享。

更新於:2021年1月18日

268 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.