为什么不能为 LSTM 使用 3D 体积输入?
Why can't you use a 3D volume input for LSTM?
最近读到的论文CountNet: Estimating the Number of Concurrent Speakers Using Supervised Learning中规定CNN层输出的3D体在进入LSTM层之前必须降维为2维序列,这是为什么呢?使用 3 维格式有什么问题?
标准 LSTM 神经网络假设输入的大小如下:
[batch size] × [sequence length] × [feature dim]
LSTM 首先将每个大小为 [feature dim]
的向量乘以一个矩阵,然后以一种奇特的方式组合它们。这里重要的是每个示例(批次维度)和每个时间步长(seq.length 维度)都有一个向量。从某种意义上说,这个向量首先通过矩阵乘法(可能涉及一些点non-linearities,不会改变形状,所以我不提它们)转换为隐藏状态更新,这也是一个向量,然后使用更新后的隐藏状态向量来产生输出(也是一个向量)。
如您所见,LSTM 旨在对向量进行运算。您可以设计一个 Matrix-LSTM – 一个 LSTM 对应物,它假设以下任何或所有是矩阵:输入、隐藏状态、输出。这将需要您将处理输入(或状态)的 matrix-vector 乘法替换为能够将任何矩阵转换为任何其他矩阵的生成线性运算,我相信这将由 4 阶张量给出.但是,这相当于将输入矩阵重塑为向量,将 rank-4 张量重塑为矩阵,进行 matrix-vector 乘积,然后将输出重塑为矩阵,因此没有意义设计这样的 Matrix-LSTM 而不是仅仅重塑您的输入。
也就是说,如果您对输入结构有所了解,那么设计一个广义的 LSTM 可能仍然有意义.例如,已知图像具有局部结构(附近的像素比相距较远的像素更相关),因此使用卷积比将图像重塑为矢量然后执行一般矩阵乘法更“合理”。以类似的方式,您可以用卷积替换 LSTM 中的所有 matrix-vector 乘法,这将允许 image-like 输入、状态和输出。
最近读到的论文CountNet: Estimating the Number of Concurrent Speakers Using Supervised Learning中规定CNN层输出的3D体在进入LSTM层之前必须降维为2维序列,这是为什么呢?使用 3 维格式有什么问题?
标准 LSTM 神经网络假设输入的大小如下:
[batch size] × [sequence length] × [feature dim]
LSTM 首先将每个大小为 [feature dim]
的向量乘以一个矩阵,然后以一种奇特的方式组合它们。这里重要的是每个示例(批次维度)和每个时间步长(seq.length 维度)都有一个向量。从某种意义上说,这个向量首先通过矩阵乘法(可能涉及一些点non-linearities,不会改变形状,所以我不提它们)转换为隐藏状态更新,这也是一个向量,然后使用更新后的隐藏状态向量来产生输出(也是一个向量)。
如您所见,LSTM 旨在对向量进行运算。您可以设计一个 Matrix-LSTM – 一个 LSTM 对应物,它假设以下任何或所有是矩阵:输入、隐藏状态、输出。这将需要您将处理输入(或状态)的 matrix-vector 乘法替换为能够将任何矩阵转换为任何其他矩阵的生成线性运算,我相信这将由 4 阶张量给出.但是,这相当于将输入矩阵重塑为向量,将 rank-4 张量重塑为矩阵,进行 matrix-vector 乘积,然后将输出重塑为矩阵,因此没有意义设计这样的 Matrix-LSTM 而不是仅仅重塑您的输入。
也就是说,如果您对输入结构有所了解,那么设计一个广义的 LSTM 可能仍然有意义.例如,已知图像具有局部结构(附近的像素比相距较远的像素更相关),因此使用卷积比将图像重塑为矢量然后执行一般矩阵乘法更“合理”。以类似的方式,您可以用卷积替换 LSTM 中的所有 matrix-vector 乘法,这将允许 image-like 输入、状态和输出。