美文网首页
Keras-Embedding Layer

Keras-Embedding Layer

作者: 在努力的Jie | 来源:发表于2022-04-02 14:14 被阅读0次
    Embedding Layer(嵌入层)

    Embedding Layer是使用在模型第一层的网络层,其目的是将所有的索引标号映射到稠密的低维向量中,比如文本集[[4],[32]]被映射为[[0.3,0.9,0.2],[-0.2,0.1,0,8]。该层通常用于文本数据建模。输入数据要求是一个二维张量:(1个批次内的文本数,每篇文本中的词语数),输出为一个三维张量:(1个批次内的文本数, 每篇文本中的词语数,每个词语的维度)

    原型
    keras.layers.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False, input_length=None)
    
    参数
    • input_dim: int > 0。词汇表大小, 即,最大整数 index + 1。
    • output_dim: int >= 0。词向量的维度。
    • embeddings_initializer: embeddings 矩阵的初始化方法 (详见 initializers)。
    • embeddings_regularizer: embeddings matrix 的正则化方法 (详见 regularizer)。
    • embeddings_constraint: embeddings matrix 的约束函数 (详见 constraints)。
    • mask_zero: 是否把 0 看作为一个应该被遮蔽的特殊的 "padding" 值。 这对于可变长的 循环神经网络层 十分有用。 如果设定为 True,那么接下来的所有层都必须支持 masking,否则就会抛出异常。 如果 mask_zero 为 True,作为结果,索引 0 就不能被用于词汇表中 (input_dim 应该与 vocabulary + 1 大小相同)。
    • input_length: 输入序列的长度,当它是固定的时。 如果你需要连接 FlattenDense 层,则这个参数是必须的 (没有它,dense 层的输出尺寸就无法计算)。
    输入数据的shape

    模型需要知道输入数据的shape,因此,Sequential的第一层需要接受一个关于输入数据shape的参数,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每个层都指定这个参数。

    实例
    model = Sequential()
    model.add(Embedding(1000, 64, input_length=10))
    # 模型将输入一个大小为 (batch, input_length) 的整数矩阵。
    # 输入中最大的整数(即词索引)不应该大于 999 (词汇表大小)
    # 现在 model.output_shape == (None, 10, 64),其中 None 是 batch 的维度。
    
    input_array = np.random.randint(1000, size=(32, 10))
    
    model.compile('rmsprop', 'mse')
    output_array = model.predict(input_array)
    assert output_array.shape == (32, 10, 64)
    

    相关文章

      网友评论

          本文标题:Keras-Embedding Layer

          本文链接:https://www.haomeiwen.com/subject/gojnjrtx.html