为什么LSTM RNN可以为任何时间序列数据返回相同的分类标签?

时间:2019-05-06 14:15:34

标签: python tensorflow time-series classification lstm

在标记的时间序列数据(3个整数标签:2、1和0)上训练LSTM RNN,我得到了〜0.46的验证损失和〜0.88的验证sparse_categorical_accuracy。但是,在相同的训练数据集上进行预测时,整个数据集仅获得'1'。

Data and classifier screenshot

我尝试过:

  • 使用StandardScaler()。fit_transform(X)缩放数据-没有结果
  • 更改优化器和激活功能-结果对于整个数据集来说都是nan,1或0
  • 增加或减少神经元数量,甚至急剧增加-没有结果
  • 时代不断增加
  • 添加BatchNormalization(),辍学,L2正则化器,另一个隐藏的LSTM或密集层

没有帮助。

X样本:

[[ 4.98   4.96   4.97  ...  5.09   5.11   4.99 ]
 [ 4.96   4.97   4.86  ...  5.11   4.99   5.05 ]
 [ 4.97   4.86   5.    ...  4.99   5.05   5.01 ]
 ...
 [15.077 15.113 15.236 ... 15.051 14.919 14.94 ]
 [15.113 15.236 15.218 ... 14.919 14.94  14.681]
 [15.236 15.218 15.225 ... 14.94  14.681 14.616]]

请注意,StandardScaler不会更改任何内容。

y个样本:

[1 1 2 ... 0 1 1]

创建模型

model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(X.shape[1], 1)))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='Adam', loss='sparse_categorical_crossentropy', metrics=['sparse_categorical_accuracy'])

拟合模型

model.fit(X, y, epochs=50, validation_split=0.2)
Epoch 34/50
 - 5s - loss: 0.5037 - sparse_categorical_accuracy: 0.8590 - val_loss: 0.4588 - val_sparse_categorical_accuracy: 0.8769

获得训练数据的预测

predicted = model.predict_classes(X)

结果:

[1 1 1 ... 1 1 1]

Original classification and predicted data 仅用于整体数据,而我期望至少某种程度上与“ y ” ...

相似的结果

我在做什么错了?

0 个答案:

没有答案