簡體   English   中英

Elmo是嵌入詞還是嵌入句子?

[英]Is Elmo a word embedding or a sentence embedding?

據說,Elmo是一個單詞嵌入。 因此,如果輸入是一個句子或一個單詞序列,則輸出應該是一系列向量。 顯然,事實並非如此。

下面的代碼使用keras和tensorflow_hub。

a = ['aaa bbbb cccc uuuu vvvv wrwr', 'ddd ee fffff ppppp']
a = np.array(a, dtype=object)[:, np.newaxis]
#a.shape==(2,1)

input_text = layers.Input(shape=(1,), dtype="string")
embedding = ElmoEmbeddingLayer()(input_text)
model = Model(inputs=[input_text], outputs=embedding)

model.summary()

ElmoEmbedding類來自https://github.com/strongio/keras-elmo/blob/master/Elmo%20Keras.ipynb

b = model.predict(a)
#b.shape == (2, 1024)

顯然,嵌入為每個句子分配1024維向量。 這令人困惑。

謝謝。

我想我找到了答案。 它位於https://tfhub.dev/google/elmo/2

輸出字典包含:

  1. word_emb:具有形狀[batch_size,max_length,512]的基於字符的單詞表示。

  2. lstm_outputs1:形狀為[batch_size,max_length,1024]的第一個LSTM隱藏狀態。

  3. lstm_outputs2:形狀為[batch_size,max_length,1024]的第二個LSTM隱藏狀態。

  4. elmo:3層的加權和,其中權重是可訓練的。 這個張量有形狀[batch_size,max_length,1024]

  5. default:所有具有形狀[batch_size,1024]的上下文化詞表示的固定均值池。

第四層是實際的單詞嵌入。 第5個將第4層的序列輸出減少為單個向量,有效地將整個事物轉換為句子嵌入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM