【发布时间】:2019-06-02 21:11:50
【问题描述】:
假设,我有一个 Seq2Seq 模型。我想在这个模型中有嵌入层。
根据我的研究,我可以通过三种方式做到这一点:
在我的数据集上单独训练词嵌入或下载预训练的词嵌入,然后使用这些嵌入的权重作为我数据集中词的权重。所以这里我根本不需要嵌入层,我只是将已经训练好的单词的权重加载到我的数据集中的单词中。
我创建了一个嵌入层并将可训练设置为 true,因此我不仅有一个嵌入,而且该嵌入将根据我的任务进行训练
我创建了一个嵌入层,加载已训练的权重,并设置可训练的 False。在这种情况下,权重不会更新。
(如果我错了,请纠正我)。
我使用了first approach。我想知道这段代码输出的解释是什么:
model_wv = Word2Vec.load("word2vec_50d_7w")
embeddings = np.zeros((len(model_wv.wv.vocab), emb_dim))
for i in range(len(model_wv.wv.vocab)):
# print(i)
embedding_vector = model_wv.wv[model_wv.wv.index2word[i]]
if embedding_vector is not None:
embeddings[i] = embedding_vector
print(embeddings[[1,2,3],[3,4,1]])
这是输出:
[-0.01566689 -1.36469996 0.59684211]
将此[1,2,3],[3,4,1] 视为与length=3 的两个序列。
我在想我们在 lstm 中使用词嵌入将序列中的每个词转换为嵌入。我希望在每个向量中看到two vectors 和three items。
嵌入是gensim中的word2vec,
如果有人在我迷路的地方阐明它,我会感激它吗?
谢谢~
【问题讨论】:
标签: tensorflow keras lstm gensim word-embedding