2017-04-07 60 views
2

我想實現一個多對一的模型,其中輸入是大小爲d的單詞向量。我需要在LSTM結束時輸出尺寸爲d的矢量。在keras中多對一的實現

enter image description here

在這種question,提到使用(對於多對一模式)

model = Sequential() 
model.add(LSTM(1, input_shape=(timesteps, data_dim))) 

我仍然懷疑如何在keras指定輸入,更重要的輸出尺寸模型

回答

1

您提供的代碼實際上是one-to-many方案 - 但對於大小爲1的輸出。如果要輸出尺寸爲d的輸出,則需要嘗試下面的代碼:

model = Sequential() 
model.add(LSTM(d, input_shape=(len_seq, d))) 

而且 - 與詞矢量我強烈建議你使用Embedding層是專爲您的使用案例。然後用它作爲你的LSTM的輸入。

+0

我覺得我給的代碼是有效的許多到一個情況,在每個時間步輸入是一個整數,LSTM輸出一個並且只有一個輸出結束。所以不應該是多對一的代碼? – MysticForce

+0

@MysticForce你有沒有想出一個解決方案?在同樣的問題上掙扎。 –

0

輸入是形狀的三維張量(batch_size時,時間步長,input_dims)

因此,這將是這個樣子:

batch_input = np.empty([batch_size] + [timesteps] + [d]) 

將有一個輸出(最後一個序列),因爲「return_state =默認情況下在keras中爲False。

輸出形狀將是:

(batch_size, 1) 

因爲你只在你LSTM有一個單位。如果你想用「d」維度的輸出,那麼你必須LSTM改變

LSTM(d, input_shape=(timesteps, data_dim))