【问题标题】:Binary Crossentropy accuracy of keras model is not changingkeras模型的二元交叉熵精度没有改变
【发布时间】:2020-07-25 02:02:46
【问题描述】:

我在网上看到了很多关于这个问题的问题,但没有明确的解决方案,我的情况可能会有所不同,因为它是时间序列数据和 LSTM 架构。

model = Sequential()
model.add(LSTM(50, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
model.add(LSTM(50, activation='relu'))
model.add(Dense(1, activation = 'sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy'])

日志:

Train on 290 samples, validate on 190 samples
Epoch 1/4000
 - 1s - loss: 0.6896 - accuracy: 0.5586 - val_loss: 0.6846 - val_accuracy: 0.6105
Epoch 2/4000
 - 0s - loss: 0.6890 - accuracy: 0.5586 - val_loss: 0.6843 - val_accuracy: 0.6105
Epoch 3/4000
 - 0s - loss: 0.6889 - accuracy: 0.5586 - val_loss: 0.6829 - val_accuracy: 0.6105
Epoch 4/4000
 - 0s - loss: 0.6884 - accuracy: 0.5586 - val_loss: 0.6827 - val_accuracy: 0.6105
Epoch 5/4000
 - 0s - loss: 0.6883 - accuracy: 0.5586 - val_loss: 0.6825 - val_accuracy: 0.6105
Epoch 6/4000
 - 0s - loss: 0.6882 - accuracy: 0.5586 - val_loss: 0.6822 - val_accuracy: 0.6105
Epoch 7/4000
 - 0s - loss: 0.6882 - accuracy: 0.5586 - val_loss: 0.6820 - val_accuracy: 0.6105
Epoch 8/4000
 - 0s - loss: 0.6880 - accuracy: 0.5586 - val_loss: 0.6818 - val_accuracy: 0.6105
Epoch 9/4000
 - 0s - loss: 0.6880 - accuracy: 0.5586 - val_loss: 0.6806 - val_accuracy: 0.6105
Epoch 10/4000
 - 0s - loss: 0.6876 - accuracy: 0.5586 - val_loss: 0.6795 - val_accuracy: 0.6105

【问题讨论】:

  • 尝试改变你的学习率(当你实例化一个优化器时)。
  • 降低还是提高学习率?

标签: python machine-learning keras loss


【解决方案1】:

要尝试的几件事:

  • 降低学习率。
  • 数据集是否不平衡?如果是,那么模型已经学会了只预测一个类别(我认为这是原因)。
  • 尝试给不平衡类更多权重检查this
  • 尝试重置模型,tf.keras.backend.clear_session
  • 尝试集成,弱学习者。
  • 更好的是,尝试基本的时间序列回归模型,例如 ARMA,以获得基线结果。

【讨论】:

    猜你喜欢
    • 2019-07-13
    • 1970-01-01
    • 2018-03-12
    • 2018-11-03
    • 2018-11-28
    • 2020-09-30
    • 1970-01-01
    • 2019-02-07
    • 2020-01-03
    相关资源
    最近更新 更多