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 將該層的嵌入矩陣設定為不可訓練,並透過將兩個較低秩的可訓練矩陣相乘來獲得原始矩陣的增量來取代它。這對於降低微調大型嵌入層的計算成本很有用。您也可以透過呼叫 layer.enable_lora(rank) 在現有的 Embedding 層上啟用 LoRA。

輸入形狀

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

輸出形狀

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