使用 LSTM 进行时间序列分类

数据挖掘 深度学习 分类 时间序列 lstm
2022-02-28 12:00:30

我有多个 .csv 文件,每个文件都代表一个产品。我正在使用 LSTM 将这些产品分类为好或坏。所有 .csv 都以(#files、time_steps、#features)的 3d 矩阵的形式组合在一起。我在 batch_size=128 中传递矩阵。

````below is the psuedo code. model = Sequential() model.add(LSTM(#cells(64), input_shape=(time_steps, #features))) model.add(Dense(1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimiser='adam', metrics=['accuracy']) model.fit(train_X, train_y, batch_size=128, epochs=100, validation_split=0.1)

问题是我在损失函数中得到了 NaN,准确度也是 0.000。

任何人都可以建议我在哪里看。提前致谢。

2个回答

NAN的原因可能有很多-

https://stats.stackexchange.com/questions/325451/cost-function-turning-into-nan-after-a-certain-number-of-iterations

https://stackoverflow.com/questions/33962226/common-causes-of-nans-during-training

基本上 LSTM 无法训练。尝试更改参数 esp 激活函数。

我没有在 python 上工作过,但是当你已经给出交叉熵作为损失函数时,你的代码中 metrics=['accuracy']) 的用途是什么。

我建议您尝试的第一件事是更改学习率。更改以下代码

model.compile(loss='binary_crossentropy', optimiser='adam',metrics='accuracy'])

from keras import optimizers
adam = optimizers.Adam(lr=1e-5)
model.compile(loss='binary_crossentropy', optimiser=adam,metrics='accuracy'])

继续降低学习率并检查是否发生同样的问题。