這個問題很古老,但似乎與關於嵌入是什麼以及它們的目的是什麼混淆有關。
首先,如果您打算事後嵌入,您絕對不應該轉換爲one-hot。這只是一個浪費的步驟。
從您的原始數據開始,您需要標記它。這只是爲您的詞彙表中的每個元素(數據中所有可能的單詞/字符[您選擇的])分配一個唯一整數的過程。 Keras有這方面的便利功能:
from keras.preprocessing.sequence import pad_sequences
from keras.preprocessing.text import Tokenizer
max_words = 100 # just a random example,
# it is the number of most frequently occurring words in your data set that you want to use in your model.
tokenizer = Tokenizer(num_words=max_words)
# This builds the word index
tokenizer.fit_on_texts(df['column'])
# This turns strings into lists of integer indices.
train_sequences = tokenizer.texts_to_sequences(df['column'])
# This is how you can recover the word index that was computed
print(tokenizer.word_index)
嵌入生成一個表示。模型中的後續圖層使用較早的表示來生成更多抽象表示。最終表示法用於根據可能類的數量(假設分類)生成概率分佈。
當您的模型進行預測時,它會爲word_index中的每個整數提供概率估計值。所以,'貓'最有可能是下一個詞,而你的word_index就像{cat:666},理想情況下這個模型對於666(非'貓')提供了很高的可能性。這有意義嗎?該模型並不能預測嵌入向量,嵌入向量是輸入數據的中間表示,這對於預測與字/字符/類相關的整數(希望)是有用的。