Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python LSTM层中某些值的Keras串联_Python_Keras_Lstm - Fatal编程技术网

Python LSTM层中某些值的Keras串联

Python LSTM层中某些值的Keras串联,python,keras,lstm,Python,Keras,Lstm,我不确定这在Keras中是否可行,但我想知道是否有任何方法可以连接LSTM层中的特定值。 我希望使用LSTM对整个序列进行编码,但对于预测,只使用特定列。 例如: 我使用了两个大小为5的输入序列(因此我的输入形状是一个输入,分别为(无,5)和(无,5) 然后我嵌入序列,我的输入形状是(无,5300)和(无,5300) 然后我用200个LSTM单元的LSTM层对序列进行编码,我的最终形状是(无,5200)和(无,5200) 现在我不想连接整个序列,而是连接lstm_1中编码的最后4个单词和ls

我不确定这在Keras中是否可行,但我想知道是否有任何方法可以连接LSTM层中的特定值。 我希望使用LSTM对整个序列进行编码,但对于预测,只使用特定列。 例如:

  • 我使用了两个大小为5的输入序列(因此我的输入形状是一个输入,分别为(无,5)和(无,5)
  • 然后我嵌入序列,我的输入形状是(无,5300)和(无,5300)
  • 然后我用200个LSTM单元的LSTM层对序列进行编码,我的最终形状是(无,5200)和(无,5200)
现在我不想连接整个序列,而是连接lstm_1中编码的最后4个单词和lstm_2中的第一个单词

> input_1 = Input(shape=(5, ))
> emb_1 = Embedding(..., 300, ...)(input_1)
> lstm_1 = CuDNNLSTM(200, ...)(emb_1)
> 
> input_2 = Input(shape=(5, ))
> emb_2 = Embedding(..., 300, ...)(input_2)
> lstm_2 = CuDNNLSTM(200, ...)(emb_2)
> 
> # here is the problem
> emb = concatenate([lstm_1[??], lstm_2[??])
> 
> d1 = Dense(...)(emb)
> out = Dense(..., activation="softmax")(d1)
不确定我是否有意义,但我想知道是否可以使用Keras函数API

致以最良好的祝愿,
Daniel

所以我没有意识到lstm_1和lstm_2实际上是可以连接的Numpy数组。所以解决方案很简单,只需将其包装在Lambda层中

lstm_1_lambda = Lambda(lambda x: x[:, -4:, :])(lstm_1)
lstm_2_lambda = Lambda(lambda x: x[:, :1, :])(lstm_2)
emb = concatenate([lstm_1_lambda, lstm_1_lambda)
致以最良好的祝愿, 丹尼尔