为什么不能对LSTM使用3D体数据输入?

在我最近阅读的论文CountNet: 使用监督学习估计同时发言者的数量中,提到从CNN层输出的3D体数据必须在进入LSTM层之前被简化为二维序列,这是为什么呢?使用三维格式有什么问题吗?


回答:

标准的LSTM神经网络假设输入的大小为:

[batch size] × [sequence length] × [feature dim]

LSTM首先将每个大小为[feature dim]的向量乘以一个矩阵,然后以一种复杂的方式将它们结合。重要的是,每个示例(批次维度)和每个时间步(序列长度维度)都有一个向量。从某种意义上说,这个向量首先通过矩阵乘法(可能涉及一些点对点非线性操作,这些操作不会改变形状,所以我没有提到它们)转换成隐藏状态更新,这也是一个向量,然后更新后的隐藏状态向量被用来产生输出(也是一个向量)。

如你所见,LSTM被设计为处理向量。你可以设计一个矩阵LSTM——一种假设输入、隐藏状态、输出中的任何或全部都是矩阵的LSTM对应物。这将要求你用一个能够将任何矩阵转换成任何其他矩阵的广义线性操作来替代处理输入(或状态)的矩阵-向量乘法,这将由一个四阶张量给出,我认为。然而,这相当于只是将输入矩阵重塑为向量,将四阶张量重塑为矩阵,进行矩阵-向量乘法,然后将输出重新塑形为矩阵,因此设计这样的矩阵LSTM而不是简单地重塑你的输入是没有意义的。

尽管如此,如果你对输入结构有所了解,并且指导了一种比一般四阶张量更具体的线性操作符,那么设计一个以非向量形式作为输入的广义LSTM仍然是有意义的。例如,已知图像具有局部结构(附近的像素比那些相距较远的像素更相关),因此使用卷积比将图像重塑为向量然后进行一般矩阵乘法更“合理”。以类似的方式,你可以用卷积替换LSTM中的所有矩阵-向量乘法,这将允许图像样式的输入、状态和输出。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注