【发布时间】:2018-05-22 08:57:06
【问题描述】:
我想创建一个 lstm 模型来对信号进行分类。
假设我有 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)。在我的情况下,有这么差的分数是正常的吗?有没有更好的方法?
谢谢
【问题讨论】:
标签: python-3.x performance keras lstm