NLP 中的embedding layer

词汇是语料库的基本元素, 所以, 使用embedding layer来学习词嵌入, 将一个词映射成为固定维度的稠密向量. 有了这一步, 才能构造矩阵, 实现神经网络的前向传播.

如何使用?

  • 从头训练
    就像word2vec一样, 这一层是可学习的, 用随机数initialize , 通过BP去调整.
  • pre-trained + fine tuning
    用其他网络(如 word2vec) 训练好的现成的词向量, 作为初始化参数, 然后继续学习.
  • pre-trained + static
    用其他网络(如 word2vec) 训练好的现成的词向量, 作为初始化参数, 并且这些参数保持固定, 不参与网络的学习.

keras 的 Embedding

Embedding(Layer)
类. 将索引映射为固定维度的稠密的向量.
eg. [[4], [20]] -> [[0.25, 0.1], [0.6, -0.2]]
This layer can only be used as the first layer in a model.

__init__(self, input_dim, output_dim,input_length,...)
构造函数, 分别为三个参数分别代表vocab_size,vector_dimension,fixed_word_number.
还有继承自父类的weights,trainable参数.
如一个语料库, 词汇量为20万, word representation vector is 200d, 文章的截断长度为250个单词, 那么
embedding_layer=Embedding(input_dim=20E4,output_dim=200,input_length=250,weights=embedding_matrix,trainable=is_trainable)

tensorflow 的 embedding

你可能感兴趣的:(NLP)