2017-07-04 84 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) 

的效果是一样的。