keras构建词向量代码需要注意的坑
-
keras中model构建步骤中的embedding
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)
-
嵌入层将正整数(下标)转换为具有固定大小的向量,如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]]
-
下标就是词典中出现的单词的下标
可以看出来在Embedding函数中并没有weights参数。其实是layers中的参数,权重初始化
1.参数
参数 | 含义 |
---|---|
input_dim | 大或等于0的整数,字典长度,即输入数据最大下标+1 |
output_dim | 大于0的整数,代表全连接嵌入的维度 |
embeddings_initializer | 嵌入矩阵的初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers |
embeddings_regularizer | 嵌入矩阵的正则项,为Regularizer对象 |
embeddings_constraint | 嵌入矩阵的约束项,为Constraints对象 |
mask_zer | 布尔值,确定是否将输入中的‘0’看作是应该被忽略的‘填充’(padding)值,该参数在使用递归层处理变长输入时有用。设置为True的话,模型中后续的层必须都支持masking,否则会抛出异常。如果该值为True,则下标0在字典中不可用,input_dim应设置为 |
input_length | 当输入序列的长度固定时,该值为其长度。如果要在该层后接Flatten层,然后接Dense层,则必须指定该参数,否则Dense层的输出维度无法自动推断。 |