【问题标题】:Keras - Look up an embeddingKeras - 查找嵌入
【发布时间】:2018-08-11 03:22:00
【问题描述】:

我想做的事:

我正在尝试从序列中查找每个单词的单词嵌入。这是从文本生成的数字序列。

背景:

我的序列(形状为 (200,))看起来像这样:

50, 2092, 3974,  398,   10, 9404,    5, 1001, 3975,   15,  512... <snip>

这些数字代表词汇表中的一个单词(10000 个单词)。我有一些嵌入权重,是我使用找到的here 的负采样方法创建的。

提取的嵌入权重的形状为 (10000 , 106),我可以将其加载到新的嵌入层中。

我想从这个带有加载权重的新嵌入层中查找序列中的每个数字,并让它返回与序列相对应的 200 个大小为 106 的向量。

这是我目前所做的:

embedding_weights = np.genfromtxt('embedding_weights.csv', delimiter=',')

    input_layer = Input(shape=(200,), name='text_input')
    embedding = Embedding(input_length=200, input_dim=vocabulary_size, output_dim=106, 
                           name='embedding_layer', trainable=False, weights=[embedding_weights])
    embedded_text = embedding(input_layer)

这是查找嵌入的正确方法吗?

【问题讨论】:

    标签: python keras word-embedding


    【解决方案1】:

    是的,这看起来是正确的。要实际提取嵌入,您可以将定义的层包装在 Model 中:

    import numpy as np
    from keras.layers import Input, Embedding
    from keras.models import Model
    
    # Generate some random weights
    embedding_weights = np.random.rand(10000, 106)
    vocabulary_size = 10000
    
    input_layer = Input(shape=(200,), name='text_input')
    embedding = Embedding(input_length=200, input_dim=vocabulary_size, output_dim=106, 
                           name='embedding_layer', trainable=False, weights=[embedding_weights])
    embedded_text = embedding(input_layer)
    
    embedding_model = Model(inputs=input_layer, outputs=embedded_text)
    
    # Random input sequence of length 200
    input_sequence = np.random.randint(0,10000,size=(1,200))
    # Extract the embeddings by calling the .predict() method
    sequence_embeddings = embedding_model.predict(input_sequence)
    

    【讨论】:

    • 工作完美。感谢您澄清这一点,我从来没有想过使用预测来提取结果嵌入。 keras 以如此简洁的方式处理嵌入查找真是太好了。
    • 不客气,keras api 确实很好用。
    • 请注意,您也可以使用K.function() 来提取嵌入。参见例如this answer
    • 如何将这个 sequence_embeddings 输入到下一层?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2018-09-03
    • 2019-01-22
    相关资源
    最近更新 更多