用于 HSI 数据分类的 LSTM

Posted

技术标签:

【中文标题】用于 HSI 数据分类的 LSTM【英文标题】:LSTM for HSI data classification 【发布时间】:2021-10-07 12:29:01 【问题描述】:

我正在尝试使用 LSTM 对 Pavia University HSI data 进行分类。 X_train 数据的形状为 (610x340, 103),y_train 数据的形状为 (610x340)。总共有9个班。因此,我有 207400 个样本和 103 个特征(每个时间步 1 个特征)。我应该如何重塑我的数据,其中每个样本都是具有一个特征的 103 个时间步长的时间序列,以便使用 LSTM 进行分类?

【问题讨论】:

【参考方案1】:

最好的方法是通过嵌入层传递您的数据,该层接受 2D 格式(样本、时间步长)的输入并将其投影到 3D(样本、时间步长、特征)。

因此,Embedding 层的输出可以传输到 Keras LSTM 层中的 LSTM 层,该层接受 3D 张量。

【讨论】:

【参考方案2】:

由于您的 y_train 有 9 个类并且形状 (610x340),我认为您在 y_train 中有类标签,您需要将每个标签转换为二进制 (1/0)。因此,对于 y_train 中的每一行,您将有 9 列,并且您的最终 y_train 应该是形状 (207400, 9)。您可以为此使用 keras.utils.to_categorical。然后您的 X_train 需要按顺序(N_observations、n_time_steps、n_variables)重塑。您可以先将其整形为 (610X340X103, 1) 或 (21362200, 1),然后再整形为 (207400, 103, 1)

【讨论】:

我已将我的 X_train 和 y_train 分别重塑为 (207400,103) 和 (207400,)。现在我应该将 input_shape 尺寸设置为 (103,1) 吗? 你的 X_train 需要是 (207400, 103, 1) 并且 y_train 需要是 (207400, 9) 因为你有 9 个类。 LSTM 的 input_shape 维度应该是 (103, 1) 并且网络需要以 9 个节点结束

以上是关于用于 HSI 数据分类的 LSTM的主要内容,如果未能解决你的问题,请参考以下文章

用于序列二进制分类的 Keras LSTM 模型

了解用于序列分类的 LSTM 架构

Matlab基于长短期记忆网络分类LSTM实现多分类预测(Excel可直接替换数据)

Matlab基于长短期记忆网络分类LSTM实现多分类预测(Excel可直接替换数据)

如何为 LSTM 重塑数据 - 时间序列多类分类

从 LSTM 自动编码器馈送分类器数据