Предположим, у меня есть модель Seq2Seq. Я хочу иметь слой Embedded в этой модели.
Основываясь на моих исследованиях, я могу сделать это тремя способами:
обучите встраиванию слова отдельно в мой набор данных или загрузите предварительно обученное встраивание слова, а затем используйте весовые коэффициенты встраивания в качестве веса слов в моем наборе данных. Так что здесь мне вообще не нужен слой внедрения, я просто загружаю веса уже обученных слов в слова в моем наборе данных.
Я создаю слой встраивания и устанавливаю обучаемое значение true, поэтому не только у меня есть вложение, но и то, что встраивание будет проходить обучение на основе моей задачи
Я создаю слой Embedding, загружаю уже обученные веса и устанавливаю обучаемый 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
в каждом векторе.
Вложение - это word2vec в gensim,
Цените это, если кто-то проливает свет на то, где я заблудился?
спасибо ~