Keras 3 API 文档 / 层 API / 核心层 / 嵌入层

嵌入层

[source]

Embedding class

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))
>>> # 该模型将输入一个大小为 (batch, input_length) 的整数矩阵,
>>> # 输入中的最大整数(即词索引)不应超过 999(词汇量大小).
>>> # 现在 model.output_shape 是 (None, 10, 64),其中 `None` 是批次维度.
>>> 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_initializer: embeddings 矩阵的初始化器 (见 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.

输入形状: 2D 张量,形状为:(batch_size, input_length).

输出形状: 3D 张量,形状为:(batch_size, input_length, output_dim).