LIUPENG BLOG
Liupeng
Feb 24, 2020
It takes 2 minutes to read this article.

tensorflow.keras.layers.Embedding

将正整数(索引)转换为固定大小的密集向量。

例如

[[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]

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

使用

model.add(tensorflow.keras.layers.Embedding(10000, 16))
# 10000词汇量,每个词用16位向量表示

参数:

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

输入形状:

形状为的2D张量:(batch_size, input_length)

输出形状:

形状为的3D张量:(batch_size, input_length, output_dim)

exmaple

model = Sequential()
model.add(Embedding(input_dim=1000, output_dim=64, input_length=10))
# 1000词汇量,每个句子10长度,每个词用64位向量表示

最大的整数(输入中的单词索引不应大于999)。

model.output_shape=(None,10,64),其中None是批处理维度。