如何解释word2vec权重的形状?

时间:2018-05-12 22:40:50

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

我正在尝试使用我的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的向量)。

我可以运行示例代码并获得良好的结果,但我想知道它的工作原理。

1 个答案:

答案 0 :(得分:2)

你已经说过了答案。嵌入每个单词以修复大小为100的向量。在您的情况下,1350是词汇量的大小,即单词的数量。至少这是df.groupby('SessionID')['App'].count().sum() # 23 层所期望的。该矩阵(1350,100)的每一行对应于一个单词。对于给定的单词索引EmbeddingEmbedding图层只执行weights[i]并返回该行。

当您预测模型的输出时,单个单词可能是词汇表中的1350个单词之一,因此您可以获得大小为1350的向量,最有可能是softmax的概率分布,告诉它可能是哪个单词。 / p>

相关问题