2017-07-04 116 views
1

我使用的是具有tensorflow後端的Keras。我在Keras中使用功能層。我想要實現的是我在某個層次上具有以下架構。在Keras中使用Lambda函數分割LSTM輸出

的張量(20200)----> LSTM ---->分割成大小爲(20100)的2張量的每個

然後,使用這兩個張量作爲進一步的網絡的兩個分支。 (我們可以認爲這與合併操作相反)

我被告知要實現這一點的唯一方法是使用Lambda圖層,因爲在Keras中沒有「分割」功能。

但是看看Lambda函數的文檔,看起來output_shape功能只與我們使用Keras相關。

任何人都可以提供任何建議如何實現這一目標?這是我想實現的粗略的僞代碼。

#Other code before this 
lstm_1st_layer = LSTM(nos_hidden_neurons, return_sequences=True)(lstm_0th_layer) 
#this layer outputs a tensor of size(20,200) 
#Split it into two tensors of size (20,100) each (call them left and right) 
left_lstm = LSTM(200, return_sequences=True)(left) 
right_lstm = LSTM(200, return_sequences=True)(right) 
#Other code after this 

回答

1

在你的地方,我會簡單地使用兩個LSTM圖層,其數量是單位數的一半。

然後你得到的兩個輸出蓄勢待發:

left = LSTM(half_nos_hidden_neurons,.....)(lstm_0th_layer) 
right = LSTM(half_nos_hidden_neurons,.....)(lstm_0th_layer) 

的效果是一樣的。