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,
    lora_alpha=None,
    **kwargs
)

一个普通的密集连接神经网络层。

Dense 层执行以下操作:output = activation(dot(input, kernel) + bias),其中 activation 是作为 activation 参数传递的逐元素激活函数,kernel 是层创建的权重矩阵,bias 是层创建的偏置向量(仅当 use_biasTrue 时适用)。

注意:如果层的输入张量阶数大于 2,Dense 层会在 inputs 的最后一个轴和 kernel 的轴 0 之间计算点积(使用 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_initializer: kernel 权重矩阵的初始化器。
  • 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。
  • lora_alpha: 可选整数。如果设置,此参数将在正向传播期间缩放低秩适应增量(通过乘以两个较低秩的可训练矩阵计算)。增量按 lora_alpha / lora_rank 进行缩放,这允许您独立于 lora_rank 微调 LoRA 调整的强度。

输入形状

N 维张量,形状为:(batch_size, ..., input_dim)。最常见的情况是形状为 (batch_size, input_dim) 的 2D 输入。

输出形状

N 维张量,形状为:(batch_size, ..., units)。例如,对于形状为 (batch_size, input_dim) 的 2D 输入,输出形状将是 (batch_size, units)