Embedding
classkeras.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)
.