2016-10-08 144 views
-1

我對LSTM模型中的輸入矢量感到困惑,我使用的數據是文本數據,例如, 1,000句話。我有兩個有關LSTM輸入層的問題:Keras中的LSTM輸入

1.如果我將這些句子標記爲矢量(我們可以稱之爲句子矢量),那麼Keras中有沒有一種方法可以讓句子矢量給出文檔?應該是單詞級別,對不對?

2.第二個問題是LSTM中的3D張量類型。我有1000個句子(樣本),如果我想要LSTM在每個時間步讀取一個文檔,time_step將是1,這是正確的嗎?最後一個是輸入維度,這個輸入維度是每個句子中的單詞維度(100)或每個時間步驟(10)中觀察到多少個單詞?

因此LSTM張量應該是(1000,1,10)或(1000,1,100)

回答

0

輸入格式(nb_samples,time_steps,input_dim)。在你的情況下,樣本的數量是句子的數量。時間步驟是句子中單詞的數量,因此這將是句子中具有最大單詞的單詞數量(其他句子必須填充以匹配此長度)。 input_dimension是用於表示每個單詞的特徵的數量。例如,如果您使用word2vec嵌入,例如100或200維(特徵),那將是您的input_dimension。

1

我不知道第一個問題的答案。我沒有Keras的經驗。不過,我有一些Tensorflow的工作經驗。

對於第二個問題,你有沒有意思「我想讀LSTM一個一句在每個時間步」。如果你的意圖是使用句子序列,我相信這是你在使用LSTM時想要做的,然後你需要定義序列長度(句子的數量將在一個特定的序列中被處理)。序列長度可以通過使用time_step來定義。所以設置time_step = 1會不正確。如果您正在處理句子向量,則最後一個是句子嵌入的向量維度。

例如,如果文檔中有1000個句子,則每個句子由大小爲100的矢量表示,並且序列長度爲5(您想要在一個序列中處理最多5個句子),則張量尺寸將是(無,5,100)。第一個是'無',以便您可以決定稍後要輸入網絡的多少個序列(小批次學習)。