keras的Embedding层

时间:2024-12-06 14:05:20
keras.layers.embeddings.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)

输入shape:形如(samples,sequence_length)的2D张量

输出shape:形如  (samples, sequence_length, output_dim)  的3D张量

重要参数

input_dim:        整数,字典长度,即输入数据最大下标+1

output_dim:      整数,代表全连接嵌入的维度

input_length:    当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。

举例说明上述参数:

假设单词表大小为1000,词向量的维度为300,那么Embedding的参数 input_dim=10000,output_dim=300。

嵌入层将正整数(下标)转换为具有固定大小的向量,如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]]。

举个栗子:

假如单词表的大小为1000,词向量维度为2,经单词频数统计后,tom对应的id=4,而jerry对应的id=20,经上述的转换后,我们会得到一个M1000×2的矩阵,而tom对应的是该矩阵的第4行,取出该行的数据就是[0.25,0.1]。