Keras 3 API 文件 / 層 API / 核心層 / 密集層

密集層

[原始碼]

Dense 類別

keras.layers.Dense(
    units,
    activation=None,
    use_bias=True,
    kernel_initializer="glorot_uniform",
    bias_initializer="zeros",
    kernel_regularizer=None,
    bias_regularizer=None,
    activity_regularizer=None,
    kernel_constraint=None,
    bias_constraint=None,
    lora_rank=None,
    **kwargs
)

一般常見的密集連接神經網路層。

Dense 實作運算:output = activation(dot(input, kernel) + bias),其中 activation 是以元素方式傳遞的激活函數,作為 activation 參數,kernel 是由該層建立的權重矩陣,而 bias 是由該層建立的偏權向量 (僅在 use_biasTrue 時適用)。

注意:如果層的輸入的秩大於 2,則 Dense 會沿著 inputs 的最後一個軸和 kernel 的軸 0 計算 inputskernel 之間的點積 (使用 tf.tensordot)。例如,如果輸入的維度為 (batch_size, d0, d1),則我們建立形狀為 (d1, units)kernel,並且 kernel 沿著 input 的軸 2,在每個形狀為 (1, 1, d1) 的子張量上運算 (有 batch_size * d0 個這樣的子張量)。在這種情況下,輸出將具有形狀 (batch_size, d0, units)

引數

  • units:正整數,輸出空間的維度。
  • activation:要使用的激活函數。如果未指定任何內容,則不會套用激活函數 (即「線性」激活:a(x) = x)。
  • use_bias:布林值,指出該層是否使用偏權向量。
  • kernel_initializerkernel 權重矩陣的初始化器。
  • bias_initializer:偏權向量的初始化器。
  • kernel_regularizer:套用至 kernel 權重矩陣的正規化函數。
  • bias_regularizer:套用至偏權向量的正規化函數。
  • activity_regularizer:套用至層輸出 (其「激活」) 的正規化函數。
  • kernel_constraint:套用至 kernel 權重矩陣的約束函數。
  • bias_constraint:套用至偏權向量的約束函數。
  • lora_rank:選用整數。如果設定,該層的前向傳遞將使用提供的秩實作 LoRA (低秩適應)。LoRA 將該層的 kernel 設定為不可訓練,並透過將兩個較低秩的可訓練矩陣相乘,將其替換為原始 kernel 上的增量。這對於降低微調大型密集層的計算成本非常有用。您也可以透過呼叫 layer.enable_lora(rank) 在現有的 Dense 層上啟用 LoRA。

輸入形狀

形狀為 (batch_size, ..., input_dim) 的 N 維張量。最常見的情況是形狀為 (batch_size, input_dim) 的 2D 輸入。

輸出形狀

形狀為 (batch_size, ..., units) 的 N 維張量。例如,對於形狀為 (batch_size, input_dim) 的 2D 輸入,輸出將具有形狀 (batch_size, units)