字符串 1.在这种情况下,LSTM 1将返回大小为n X t X 10的输出,LSTM 2将返回大小为n X t X 10的输出 1.现在,您可以在下面选择如何使用merge_mode在每个时间步组合LSMT 1和LSTM 2的合并输出
**sum:**在每个时间步将LSTM 1输出加到LSTM 2。即LSTM 1的n X t X 10 + LSTM 2的n X t X 10 =输出大小n X t X 10 **穆尔:**LSTM 1输出到LSTM 2在每个时间步的元素乘,这将导致大小为n X t X 10的输出 **concat:**在每个时间步将LSTM 1输出按元素连接到LSTM 2,这将导致大小为n X t X 10*2的输出 **ave:**在每个时间步,LSTM 1输出到LSTM 2的元素平均值,这将导致大小为n X t X 10的输出 **无:**返回LSTM 1和LSTM 2输出列表
3条答案
按热度按时间jw5wzhpr1#
1.在Bi-LSTM中,一个LSTM从左到右展开(比如LSTM 1),另一个LSTM从右到左展开(比如LSTM 2)。
n X t X f
,其中n
:批量大小t
序列长度/时间步长/展开数)f
:否:每个时间步的特征Bi-LSTM
的模型,定义如下字符串
1.在这种情况下,LSTM 1将返回大小为
n X t X 10
的输出,LSTM 2将返回大小为n X t X 10
的输出1.现在,您可以在下面选择如何使用
merge_mode
在每个时间步组合LSMT 1和LSTM 2的合并输出**sum:**在每个时间步将LSTM 1输出加到LSTM 2。即LSTM 1的
n X t X 10
+ LSTM 2的n X t X 10
=输出大小n X t X 10
**穆尔:**LSTM 1输出到LSTM 2在每个时间步的元素乘,这将导致大小为
n X t X 10
的输出**concat:**在每个时间步将LSTM 1输出按元素连接到LSTM 2,这将导致大小为
n X t X 10*2
的输出**ave:**在每个时间步,LSTM 1输出到LSTM 2的元素平均值,这将导致大小为
n X t X 10
的输出**无:**返回LSTM 1和LSTM 2输出列表
在基于
merge_mode
组合输出后,不会应用激活函数。如果你想应用激活,你必须在模型中显式定义为层。测试代码
型
注意:
你不能在序列模型中使用
merge_mode=None
,因为每一层都应该返回一个Tensor,但是None
返回一个列表,所以你不能在模型中堆叠它。但是你可以在keras的函数API中使用它。t2a7ltrp2#
这很简单。想象一下,你的前向LSTM层返回了一个像
[0.1, 0.2, 0.3]
这样的状态,而后向LSTM层返回了[0.4, 0.5, 0.6]
。然后连接(简称为concat)是[0.1, 0.2, 0.3, 0.4, 0.5, 0.6]
,它被进一步传递给激活层。q43xntqr3#
merge_mode
:前向和后向RNN的输出将被组合的模式。{'sum', 'mul', 'concat', 'ave', None}
之一。如果None
,输出将不会被组合,它们将作为列表返回。默认值为'concat'
。来自https://keras.io/api/layers/recurrent_layers/bidirectional/)