[英]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 。
輸出字典包含:
word_emb:具有形狀[batch_size,max_length,512]的基於字符的單詞表示。
lstm_outputs1:形狀為[batch_size,max_length,1024]的第一個LSTM隱藏狀態。
lstm_outputs2:形狀為[batch_size,max_length,1024]的第二個LSTM隱藏狀態。
elmo:3層的加權和,其中權重是可訓練的。 這個張量有形狀[batch_size,max_length,1024]
default:所有具有形狀[batch_size,1024]的上下文化詞表示的固定均值池。
第四層是實際的單詞嵌入。 第5個將第4層的序列輸出減少為單個向量,有效地將整個事物轉換為句子嵌入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.