Keras 3 API 文件 / 層 API / 核心層 / 嵌入層

嵌入層

[原始碼]

Embedding 類別

keras.layers.Embedding(
    input_dim,
    output_dim,
    embeddings_initializer="uniform",
    embeddings_regularizer=None,
    embeddings_constraint=None,
    mask_zero=False,
    weights=None,
    lora_rank=None,
    **kwargs
)

將非負整數(索引)轉換為固定大小的密集向量。

例如:[[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]

此層只能用於固定範圍的非負整數輸入。

範例

>>> model = keras.Sequential()
>>> model.add(keras.layers.Embedding(1000, 64))
>>> # The model will take as input an integer matrix of size (batch,
>>> # input_length), and the largest integer (i.e. word index) in the input
>>> # should be no larger than 999 (vocabulary size).
>>> # Now model.output_shape is (None, 10, 64), where `None` is the batch
>>> # dimension.
>>> input_array = np.random.randint(1000, size=(32, 10))
>>> model.compile('rmsprop', 'mse')
>>> output_array = model.predict(input_array)
>>> print(output_array.shape)
(32, 10, 64)

參數

  • input_dim:整數。詞彙表大小,即最大整數索引 + 1。
  • output_dim:整數。密集嵌入的維度。
  • embeddings_initializerembeddings 矩陣的初始化器(請參閱 keras.initializers)。
  • embeddings_regularizer:應用於 embeddings 矩陣的正規化函數(請參閱 keras.regularizers)。
  • embeddings_constraint:應用於 embeddings 矩陣的約束函數(請參閱 keras.constraints)。
  • mask_zero:布林值,指示輸入值 0 是否為應遮罩的特殊「填充」值。這在使用可能採用可變長度輸入的循環層時非常有用。如果此值為 True,則模型中的所有後續層都需要支援遮罩,否則會引發例外。如果將 mask_zero 設定為 True,則作為結果,索引 0 無法在詞彙表中使用(input_dim 應等於詞彙表大小 + 1)。
  • weights:可選的浮點矩陣,大小為 (input_dim, output_dim)。要使用的初始嵌入值。
  • lora_rank:可選的整數。如果設定,則此層的前向傳遞將使用提供的秩實作 LoRA(低秩適應)。LoRA 將此層的 embeddings 矩陣設定為不可訓練,並將其替換為原始矩陣上的 delta,該 delta 通過將兩個較低秩的可訓練矩陣相乘獲得。這可用於降低微調大型嵌入層的計算成本。您還可以通過調用 layer.enable_lora(rank) 在現有的 Embedding 層上啟用 LoRA。

輸入形狀

2D 張量,形狀為:(batch_size, input_length)

輸出形狀

3D 張量,形狀為:(batch_size, input_length, output_dim)