[source]

Embedding

keras.layers.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)

将正整数(索引)转换为固定大小的密集向量. 例如. [[4],[20]]-> [[0.25,0.1],[0.6,-0.2]]

该层只能用作模型中的第一层.

Example

model = Sequential()
model.add(Embedding(1000, 64, input_length=10))
# the model will take as input an integer matrix of size (batch, input_length).
# the largest integer (i.e. word index) in the input should be
# no larger than 999 (vocabulary size).
# now model.output_shape == (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)
assert output_array.shape == (32, 10, 64)

Arguments

  • input_dim :int>0.词汇表的大小,即最大整数索引+ 1.
  • output_dim :int> =0.密集嵌入的尺寸.
  • embeddings_initializerembeddings矩阵的初始化程序 (请参阅Initializers ).
  • embeddings_regularizer :应用于embeddings矩阵的正则化函数(请参见regulator ).
  • activity_regularizer :将正则化函数应用于图层的输出(其"激活"). (请参阅正则化器 ).
  • embeddings_constraint :应用于embeddings矩阵的约束函数(请参阅Constraints ).
  • mask_zero :输入值0是否为应屏蔽的特殊"填充"值. 这在使用可能需要可变长度输入的循环图层时很有用. 如果为True则模型中的所有后续层都需要支持屏蔽,否则将引发异常. 结果,如果mask_zero设置为True,则无法在词汇表中使用索引0(input_dim应等于词汇表大小+ 1).
  • input_length :输入序列的长度,如果为常数. 如果要在上游连接Flatten然后连接Dense层,则需要此参数(否则,将无法计算密集输出的形状).

输入形状

形状为(batch_size, sequence_length) 2D张量.

输出形状

具有以下形状的3D张量: (batch_size, sequence_length, output_dim) .

References