我想创建一个LSTM模型来分类信号。
假设我有1000个信号文件。每个文件都包含一个形状为(500,5)的矩阵,这意味着在每个文件中,我有5个特征(列)和500行。
假设我有1000个信号文件。每个文件都包含一个形状为(500,5)的矩阵,这意味着在每个文件中,我有5个特征(列)和500行。
0 1 2 3 4
0 5 5.3 2.3 4.2 2.2
... ... ... ... ... ...
499 2500 1.2 7.4 6.7 8.6
每个文件都有一个输出,它是一个布尔值(True 或 False),形状为 (1,)。
我创建了一个名为 data 的数据库,其形状为 (1000, 5, 500),目标向量的形状为 (1000, 1)。
然后我将数据拆分成 X_train、X_test、y_train 和 y_test。
我可以像这样向 lstm 模型提供矩阵吗?因为我的性能非常差。从我所看到的情况来看,人们只给出一个 1D 或 2D 数据,并在之后调整数据形状以便将一个 3D 输入提供给 lstm 层。
使用 lstm 的代码如下:
input_shape=(X_train.shape[1], X_train.shape[2]) #(5,500), i.e timesteps and features
model = Sequential()
model.add(LSTM(20, return_sequences=True))
model.add(LSTM(20))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam')
我改变了LSTM层中的单元格数量和层数,但得分基本相同(0.19)。在我的情况下,这样低的得分正常吗?有更好的方法吗?
谢谢