赞
踩
菜鸟要开始做笔记了。。。
之前一直想要做笔记,一直拖拖拖到现在。做笔记的目的是为了和大家分享一下自己的学习过程,希望能够帮到需要的同学;还有一点就是自己发现学过的东西记不住,忘得快,所以也希望通过这种方式重复学习,把自己掌握的东西讲出来。争取从一个菜鸟成为大菜鸟,加油!
在NLP中,Embedding可以说是必不可少的;由于计算机并不认识我们所熟知的文字,所以我们必须要进行文字向量化表示。通俗地说,embedding的过程是用一个低维的向量表示一个词(或句子或其他,毕竟万物皆可embedding)。word2vec是embedding中的一个重要角色,即是将词进行vector,例如在embedding后,vector(中国)-vector(北京) = vector(法国)-vector(巴黎)。我认为一个好的embedding可以让任务事半功倍。
Embedding能够用低维向量对物体进行编码还能保留其含义的特点非常适合深度学习。
word embedding即单词嵌入,Keras提供了一个嵌入层,将正整数(下标)转换为具有固定大小的向量。
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)
参数意义如下
需要注意的是,若直接在Embedding层后接Dense层,必须使用Flatten层将Embedding层的2D输出矩阵平铺为一维矢量。
embedding层使用较为灵活,在此可分为加载预训练模型和不加载预训练模型。
假设输入长度为20的句子,词向量设置为300维,词数量为1000
from keras.layers import Embedding
max_len = 20
vocab_size = 1000
input_ = Input(shape = (max_len, ))
emd = Embedding(input_dim = vocab_size , output_dim = 300, input_length = max_len)(input_)
假设输入长度为20的句子,预训练的词向量维度为150,词数量为1000
from keras.layers import Embedding
max_len = 20
vocab_size = 1000
#embedding_matri为预训练单词的权重矩阵
input_ = Input(shape = (max_len, ))
emd = Embedding(input_dim=vocab_size , output_dim=150, input_length=max_len, weights=[embedding_matrix], trainable=False)(input_)
https://keras-cn.readthedocs.io/en/latest/layers/embedding_layer/#embedding_1
https://zhuanlan.zhihu.com/p/53194407
https://zhuanlan.zhihu.com/p/49271699
http://frankchen.xyz/2017/12/18/How-to-Use-Word-Embedding-Layers-for-Deep-Learning-with-Keras/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。