Python 如何解释word2vec权重的形状?
我试图使用word2vec模型中的权重作为keras中神经网络嵌入层的权重。我下面介绍的应用程序:Python 如何解释word2vec权重的形状?,python,neural-network,keras,deep-learning,word2vec,Python,Neural Network,Keras,Deep Learning,Word2vec,我试图使用word2vec模型中的权重作为keras中神经网络嵌入层的权重。我下面介绍的应用程序: 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=v
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
返回(1350100),但我不确定1350数字的含义
keras_model.predict(np.array([word_model.wv.vocab['test'].index]))
返回一个大小为1350的向量,我不确定如何解释(模型训练的响应是大小为7200的向量)
我可以运行示例代码并获得很好的结果,但我想知道它为什么有效。您已经给出了答案。每个单词都被嵌入到大小为100的固定向量中。在你的例子中,1350是词汇量的大小。至少这是
嵌入层所期望的。该矩阵的每一行(13501000)对应一个单词。Embedding
层只对给定的单词索引i
加权[i]
,并返回行
当你预测模型的输出时,一个单词可能是你词汇表中1350个单词中的一个,因此你得到一个1350大小的向量,很可能是softmax的概率分布,告诉你它可能是哪个单词。尽管文本中有3500多个独特的单词。它只是为1350个单词做向量吗?我刚刚意识到我看到的结果是错误的。模型训练的文本只有1350个单词,所以这个结果是有意义的。