【问题标题】:Why can't you use a 3D volume input for LSTM?为什么不能为 LSTM 使用 3D 体积输入?
【发布时间】:2021-02-02 00:08:07
【问题描述】:
【问题讨论】:
标签:
machine-learning
neural-network
lstm
recurrent-neural-network
【解决方案1】:
标准 LSTM 神经网络假设输入的大小如下:
[batch size] × [sequence length] × [feature dim]
LSTM 首先将每个大小为[feature dim] 的向量乘以一个矩阵,然后以一种奇特的方式组合它们。这里重要的是每个示例(批次维度)和每个时间步(seq.length 维度)都有一个向量。从某种意义上说,这个向量首先通过矩阵乘法(可能涉及一些逐点非线性,不会改变形状,所以我不提)转换为隐藏状态更新,这也是一个向量,然后使用更新后的隐藏状态向量来产生输出(也是一个向量)。
如您所见,LSTM 旨在对向量进行操作。你可以设计一个 Matrix-LSTM——一个 LSTM 对应物,它假设以下任何或所有都是矩阵:输入、隐藏状态、输出。这将要求您通过生成的线性运算替换处理输入(或状态)的矩阵向量乘法,该运算能够将任何矩阵转换为任何其他矩阵,我相信这将由 rank-4 张量给出。但是,它相当于只是将输入矩阵重新整形为向量,将 rank-4 张量重新整形为矩阵,进行矩阵向量乘积,然后将输出重新整形为矩阵,因此设计这样的矩阵没有什么意义Matrix-LSTM,而不仅仅是重塑您的输入。
也就是说,如果您对输入结构有所了解,它可以指示比通用 rank-4 张量更具体的线性算子,那么设计一个将向量以外的其他内容作为输入的通用 LSTM 可能仍然有意义。例如,已知图像具有局部结构(附近的像素比相距较远的像素更相关),因此使用卷积比将图像重新整形为向量然后执行一般矩阵乘法更“合理”。以类似的方式,您可以将 LSTM 中的所有矩阵向量乘法替换为卷积,这将允许类似图像的输入、状态和输出。