【问题标题】:Embedding in Keras嵌入 Keras
【发布时间】:2018-07-29 11:17:43
【问题描述】:

在 Keras 内置函数中嵌入使用哪种算法? Word2vec?手套?其他?

https://keras.io/layers/embeddings/

【问题讨论】:

    标签: keras nlp data-science word-embedding


    【解决方案1】:

    简短的回答是都不是。本质上,GloVeWord2Vec 等嵌入层只是一个小的神经网络模块(通常是全连接层),它将更高、稀疏的维度投影到更低、n维向量。

    当您将 Keras 中的一个新鲜随机嵌入层插入到您的神经网络中时,Keras 将构建一个形状为[input_dim, output_dim] 的密集可学习矩阵。

    具体来说,假设您要插入一个嵌入层以将 整数标量 月份信息(12 个唯一值)编码为大小为 3 的 浮点向量。在 Keras ,您将按如下方式声明您的嵌入:

    import numpy as np
    import keras
    from keras.models import Sequential, Model
    from keras.layers import Embedding, Input
    x = Input(shape=(1000,)) # suppose seq_len=1000
    embedding = Embedding(12+1, 3, input_length=1000)(x)
    model = Model(inputs=x, outputs= embedding) # Functional API
    model.summary()
    

    您的嵌入层将有如下摘要:

    _________________________________________________________________
    Layer (type)                 Output Shape              Param #   
    =================================================================
    input_1 (InputLayer)         (None, 1000)              0         
    _________________________________________________________________
    embedding_1 (Embedding)      (None, 1000, 3)           39        
    =================================================================
    Total params: 39
    Trainable params: 39
    Non-trainable params: 0
    _________________________________________________________________
    

    请注意,可学习的参数是 39 = 13*3(Keras 需要 +1 来编码不属于 12 个唯一月份中的任何一个的值 - 以防万一)。 p>

    还请注意,虽然嵌入的输入形状为(None, 1000),但嵌入的输出为(None, 1000, 3)。这意味着大小为[13, 3] 的非常小的密集权重矩阵应用于 1000 个输入时间步中的每个。这意味着,0-11 的每个月整数输入将被转换为大小为 (3,) 的浮点向量。

    这也意味着当你从最后一层反向传播到嵌入层时,1000 个时间步嵌入输出中每个的梯度也将流动(以time_distributed 方式)到大小为[13,3] 的小型神经网络权重(本质上嵌入层)。

    嵌入层请参考 Keras 官方文档:https://keras.io/layers/embeddings/

    【讨论】:

    • GloVe 不是神经网络,它被设置为线性最小二乘回归问题。
    【解决方案2】:

    以上都不是。默认随机初始化embeddings_initializer='uniform'

    tutorial 介绍了如何使用现有嵌入。

    【讨论】:

    • 所以这个嵌入完全没有意义?
    • 是的,默认是统一随机值。
    • 嵌入一点意思都没有,是不是没用?
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多