【问题标题】:How to interpret shape of word2vec weights?如何解释 word2vec 权重的形状?
【发布时间】:2018-10-22 23:43:18
【问题描述】:

我正在尝试使用我的 word2vec 模型中的权重作为我在 keras 中的神经网络的嵌入层的权重。我关注的example code 使用:

word_model = gensim.models.Word2Vec(sentences, size=100, min_count=1, 
                                window=5, iter=100)
pretrained_weights = word_model.wv.syn0
keras_model.add(Embedding(input_dim=vocab_size, output_dim=emdedding_size, 
                weights=[pretrained_weights]))

我知道 word2vec 为每个单词创建向量,在这种情况下大小为 100。

pretrained_weights.shape 返回 (1350,100),但我不确定 1350 数字是什么意思。

keras_model.predict(np.array([word_model.wv.vocab['test'].index])) 返回一个大小为 1350 的向量,我不确定如何解释(训练模型的响应是大小为 7200 的向量)。

我可以运行示例代码并获得很好的结果,但我想知道它为什么有效。

【问题讨论】:

    标签: python neural-network keras deep-learning word2vec


    【解决方案1】:

    你已经说了答案。每个单词都被嵌入以固定大小为 100 的向量。在您的情况下,1350 是词汇的大小,即单词的数量。至少这是Embedding 层所期望的。该矩阵的每一行 (1350, 100) 对应于一个单词。 Embedding 层只是对给定的单词索引 i 执行 weights[i] 并返回行。

    当您预测模型的输出时,单个单词可能是您词汇表中 1350 个单词中的一个,因此您会得到一个大小为 1350 的向量,这很可能是来自 softmax 的概率分布,告诉您它可能是哪个单词。

    【讨论】:

    • 该文本有超过 3500 个独特的单词。是只制作1350字的向量吗?
    • 刚刚意识到我看错了结果。模型训练的文本只有 1350 个单词,所以这个结果是有道理的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2016-05-13
    • 2020-08-11
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    相关资源
    最近更新 更多