1 回答
TA贡献1820条经验 获得超10个赞
1) 假设您将一个序列输入到 LSTM(正常用例):
它不会相同,因为 LSTM 返回一个序列 ( return_sequences=True
),从而不会降低输入维度。因此,输出形状为(Batch, Sequence, Hid)
。这被馈送到在维度(即 )Convolution1D
上执行卷积的层。因此,实际上,一维卷积的目的是在 LSTM 之后提取局部一维子序列/补丁。Sequence
(Sequence, Hid)
如果有的话return_sequences=False
,LSTM 将返回最终状态h_t
。为了确保与密集层具有相同的行为,您需要一个完全连接的卷积层,即长度为长度的内核Sequence
,并且我们需要与Hid
输出形状中一样多的滤波器。这将使一维卷积相当于密集层。
2)假设您没有向 LSTM 输入序列(您的示例):
在您的示例中,LSTM 用作密集层的替代品。它具有相同的功能,但它给出的结果略有不同,因为门会进行额外的转换(即使我们没有序列)。
(Sequence, Hid)
由于随后在=上执行卷积(1, Hid)
,因此它确实是按时间步进行操作的。由于我们有 128 个输入和 128 个过滤器,因此它是完全连接的,并且内核大小足以在单个元素上进行操作。这符合上面定义的一维卷积相当于密集层的标准,所以你是对的。
附带说明一下,这种类型的架构通常是通过神经架构搜索获得的。这里使用的“替代品”并不常见,并且通常不能保证比更成熟的替代品更好。然而,在很多情况下,使用强化学习或进化算法可以使用“非传统”解决方案获得稍微更高的准确性,因为非常小的性能提升可能只是偶然发生,并且不一定反映架构的有用性。
添加回答
举报